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:
tmerritt committed 2026-10-16 20:24:23 -04:00
1 parent 3ef16a6f99
commit 4c644d2a20
23 files changed
+17290 -507

No files matched your search

+51 -9
View File
@@ -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
+2
View File
@@ -0,0 +1,2 @@
.segment "CHR"
.incbin "chr.bin"
+71
View File
@@ -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.
1 # MUSCLE (U) data-region structure - Pass 3
2 # start<TAB>end<TAB>label<TAB>format<TAB>comment
3 0x85ED 0x8638 StandaloneBytecodeProgram bytes Pass 3: bytecode program not listed in BytecodeProgramPointerTable.
4 0x881F 0x8836 StandaloneBytecodeProgram_1 bytes Pass 3: bytecode program not listed in BytecodeProgramPointerTable.
5 0x8A1E 0x8A27 StandaloneBytecodeProgram_2 bytes Pass 3: tail of a bytecode program; the $1D byte rules out an instruction decode.
6 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.
7 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.
8 0x8D3B 0x8D3F BytecodeProgram_00 bytes Pass 3: bytecode program, table index/indices [13], 5 bytes.
9 0x8D40 0x8D5B BytecodeProgram_01 bytes Pass 3: bytecode program, table index/indices [36], 28 bytes.
10 0x8D5C 0x8D8C BytecodeProgram_02 bytes Pass 3: bytecode program, table index/indices [37], 49 bytes.
11 0x8D8D 0x8D95 BytecodeProgram_03 bytes Pass 3: bytecode program, table index/indices [22], 9 bytes.
12 0x8D96 0x8D9E BytecodeProgram_04 bytes Pass 3: bytecode program, table index/indices [23], 9 bytes.
13 0x8D9F 0x8DB5 BytecodeProgram_05 bytes Pass 3: bytecode program, table index/indices [33], 23 bytes.
14 0x8DB6 0x8DE1 BytecodeProgram_06 bytes Pass 3: bytecode program, table index/indices [34], 44 bytes.
15 0x8DE2 0x8E2C BytecodeProgram_07 bytes Pass 3: bytecode program, table index/indices [35], 75 bytes.
16 0x8E2D 0x8E78 BytecodeProgram_08 bytes Pass 3: bytecode program, table index/indices [14], 76 bytes.
17 0x8E79 0x8EA8 BytecodeProgram_09 bytes Pass 3: bytecode program, table index/indices [11], 48 bytes.
18 0x8EA9 0x8EF3 BytecodeProgram_0A bytes Pass 3: bytecode program, table index/indices [24], 75 bytes.
19 0x8EF4 0x8F19 BytecodeProgram_0B bytes Pass 3: bytecode program, table index/indices [25], 38 bytes.
20 0x8F1A 0x8F1F BytecodeProgram_0C bytes Pass 3: bytecode program, table index/indices [28], 6 bytes.
21 0x8F20 0x8F47 BytecodeProgram_0D bytes Pass 3: bytecode program, table index/indices [31], 40 bytes.
22 0x8F48 0x8F70 BytecodeProgram_0E bytes Pass 3: bytecode program, table index/indices [32], 41 bytes.
23 0x8F71 0x8F93 BytecodeProgram_0F bytes Pass 3: bytecode program, table index/indices [29], 35 bytes.
24 0x8F94 0x8FFC BytecodeProgram_10 bytes Pass 3: bytecode program, table index/indices [16], 105 bytes.
25 0x8FFD 0x9007 BytecodeProgram_11 bytes Pass 3: bytecode program, table index/indices [15], 11 bytes.
26 0x9008 0x9070 BytecodeProgram_12 bytes Pass 3: bytecode program, table index/indices [17], 105 bytes.
27 0x9071 0x907C BytecodeProgram_13 bytes Pass 3: bytecode program, table index/indices [27], 12 bytes.
28 0x907D 0x9080 BytecodeProgram_14 bytes Pass 3: bytecode program, table index/indices [0], 4 bytes.
29 0x9081 0x90A5 BytecodeProgram_15 bytes Pass 3: bytecode program, table index/indices [1], 37 bytes.
30 0x90A6 0x90B8 BytecodeProgram_16 bytes Pass 3: bytecode program, table index/indices [26], 19 bytes.
31 0x90B9 0x90C9 BytecodeProgram_17 bytes Pass 3: bytecode program, table index/indices [5], 17 bytes.
32 0x90CA 0x90D6 BytecodeProgram_18 bytes Pass 3: bytecode program, table index/indices [2], 13 bytes.
33 0x90D7 0x90DD BytecodeProgram_19 bytes Pass 3: bytecode program, table index/indices [12], 7 bytes.
34 0x90DE 0x9118 BytecodeProgram_1A bytes Pass 3: bytecode program, table index/indices [3], 59 bytes.
35 0x9119 0x9130 BytecodeProgram_1B bytes Pass 3: bytecode program, table index/indices [4], 24 bytes.
36 0x9131 0x9135 BytecodeProgram_1C bytes Pass 3: bytecode program, table index/indices [6], 5 bytes.
37 0x9136 0x9140 BytecodeProgram_1D bytes Pass 3: bytecode program, table index/indices [7], 11 bytes.
38 0x9141 0x9174 BytecodeProgram_1E bytes Pass 3: bytecode program, table index/indices [8], 52 bytes.
39 0x9175 0x918A BytecodeProgram_1F bytes Pass 3: bytecode program, table index/indices [18], 22 bytes.
40 0x918B 0x91DF BytecodeProgram_20 bytes Pass 3: bytecode program, table index/indices [19], 85 bytes.
41 0x91E0 0x91EB BytecodeProgram_21 bytes Pass 3: bytecode program, table index/indices [20], 12 bytes.
42 0x91EC 0x922B BytecodeProgram_22 bytes Pass 3: bytecode program, table index/indices [21], 64 bytes.
43 0x922C 0x922E BytecodeProgram_23 bytes Pass 3: bytecode program, table index/indices [9], 3 bytes.
44 0x922F 0x9231 BytecodeProgram_24 bytes Pass 3: bytecode program, table index/indices [10], 3 bytes.
45 0x9232 0x9236 BytecodeProgram_25 bytes Pass 3: bytecode program, table index/indices [30], 5 bytes.
46 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.
47 0x9EF4 0x9F13 OamShadowTemplate bytes Pass 3: the 32-byte initial OAM block LoadOamShadowFromTable copies into $0300.
48 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.
49 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.
50 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.
51 0xAB14 0xAB67 StandaloneBytecodeProgram_3 bytes Pass 3: bytecode program not listed in BytecodeProgramPointerTable.
52 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).
53 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`.
54 0xAE35 0xAE44 AnimationFrameCollisionBits bytes Pass 3: 16-entry animation-frame -> collision-flag-bits table (index = animation frame & $0F).
55 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.
56 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.
57 0xB0E3 0xB0F2 SoundNoteDurationTable bytes Pass 3: 16 note durations, index = (duration byte - $F0), clamped by the table's end at $B0F2.
58 0xB0F3 0xB0F6 ApuChannelEnableBitsSet bytes Pass 3: 4 x 1-byte masks OR-ed into ApuEnableMask, indexed by channel*4 in BuildApuChannelMask.
59 0xB0F7 0xB0FA ApuChannelEnableBitsClear bytes Pass 3: 4 x 1-byte masks AND-ed into ApuEnableMask, indexed by channel*4 in RebuildApuEnableMask.
60 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.
61 0xB91B 0xB970 StageDataFiller bytes Pass 3: an 86-byte run of $FF padding between stage data blocks.
62 0xB971 0xBD27 StageNametableAndObjectData_1 bytes Pass 3: continuation of the stage data block; see StageNametableAndObjectData.
63 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.
64 0xBD2A 0xBEBF StageNametableAndObjectData_2 bytes Pass 3: continuation of the stage data block, read through StageDataPointerLow plus the $32 per-player offset.
65 0xBEC0 0xBEC7 InitialOamAttributes bytes Pass 3: 8 entries (ldx #$07) copied into $0220 by CompactOamList.
66 0xBEC8 0xBECF InitialOamTiles bytes Pass 3: 8 entries copied into $0223 by CompactOamList.
67 0xBED0 0xBF8F StageDataTail bytes Pass 3: the tail of the stage data block, ahead of the VRAM block descriptors.
68 0xBF90 0xBF97 VramBlockByteCounts bytes Pass 3: 8 block sizes fed to ExecuteVramTransfer by ReadControllerAndInit.
69 0xBF98 0xBF9F VramBlockSourceLowBytes bytes Pass 3: 8 block source low bytes; the high byte is always $02.
70 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.
71 0xBFFB 0xBFFF InterruptVectors bytes Pass 3: the three CPU vectors, mirrored into the ROM at $FFFB-$FFFF.
+2
View File
@@ -0,0 +1,2 @@
.segment "HEADER"
.incbin "header.bin"
+702
View File
@@ -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 label Label_800E WaitForFirstPpuWarmup
2 label Label_8019 WaitForSecondPpuWarmup
3 label Label_802C InitializeGameState
4 label Label_803B InitializeGameState_OnNonzero_803B
5 label Label_8052 UpdateNametableFromStream
6 label Label_805B UpdateNametableFromStream_OnNonzero_805B
7 label Label_8066 UpdateNametableFromStream_OnZero_8066
8 label Label_806E UpdateNametableFromStream_OnNonnegative_806E
9 label Label_8077 UpdateNametableFromStream_OnZero_8077
10 label Label_807A UpdateNametableFromStream_OnZero_807A
11 label Label_8080 UpdateNametableFromStream_OnZero_8080
12 label Label_8094 UpdateNametableFromStream_OnZero_8094
13 label Label_80AC StartStageSequence
14 label Label_80E0 StartStageSequence_OnZero_80E0
15 label Label_8105 StartStageSequence_OnNonzero_8105
16 label Label_810A StartStageSequence_OnNonzero_810A
17 label Label_811A StartStageSequence_OnZero_811A
18 label Label_8132 UpdateFadeFlashSprites
19 label Label_8154 UpdateFadeFlashSprites_OnCarryClear_8154
20 label Label_8164 InitializeRound
21 label Label_8173 InitializeRound_OnCarryClear_8173
22 label Label_8187 InitializeRound_OnNonnegative_8187
23 label Label_8191 InitializeRound_OnNonzero_8191
24 label Label_8196 InitializeRound_OnNonnegative_8196
25 label Label_81A0 InitializeRound_OnNonzero_81A0
26 label Label_81D6 InitializeRound_OnCarryClear_81D6
27 label Label_81DA InitializeRound_OnCarryClear_81DA
28 label Label_81DE InitializeRound_OnCarryClear_81DE
29 label Label_81E0 InitializeRound_OnCarryClear_81E0
30 label Label_81E2 InitializeRound_JoinBranchPaths_81E2
31 label Label_8223 InitializeRound_OnNonzero_8223
32 label Label_8226 MainGameLoop
33 label Label_8232 MainGameLoop_OnZero_8232
34 label Label_8235 MainGameLoop_OnZero_8235
35 label Label_824D MainGameLoop_OnZero_824D
36 label Label_8255 MainGameLoop_OnNonzero_8255
37 label Label_8261 MainGameLoop_OnNonzero_8261
38 label Label_8267 MainGameLoop_OnNonnegative_8267
39 label Label_8284 MainGameLoop_OnZero_8284
40 label Label_828C MainGameLoop_OnNonzero_828C
41 label Label_8298 MainGameLoop_OnNonzero_8298
42 label Label_829E MainGameLoop_OnNonnegative_829E
43 label Label_82AC DivideBy20
44 label Label_82BE DivideBy20_OnNonzero_82BE
45 label Label_82DA DivideBy20_OnCarryClear_82DA
46 label Label_82E1 SilenceSoundChannels1And3
47 label Label_82ED SilenceSoundChannel3
48 label Label_82FA StartIntroMusic
49 label Label_82FF StartMusicSequence
50 label Label_832A UpdateHudTallyTiles
51 label Label_833E UpdateHudTallyTiles_OnZero_833E
52 label Label_8352 UpdateHudTallyTiles_OnZero_8352
53 label Label_8353 UpdateScoreTallyDigits
54 label Label_8372 WriteScoreTallyDigits
55 label Label_8374 WriteScoreTallyDigits_OnCarryClear_8374
56 label Label_8385 WriteScoreTallyDigits_OnZero_8385
57 label Label_8390 WriteScoreTallyDigits_OnNonzero_8390
58 label Label_8399 LoadOamShadowFromTable
59 label Label_839B LoadOamShadowFromTable_OnNonnegative_839B
60 label Label_83A7 UpdateActorPositions
61 label Label_83AB UpdateActorPositions_OnNonnegative_83AB
62 label Label_83D0 UpdateActorPositions_OnZero_83D0
63 label Label_83E1 UpdateActorPositions_OnCarryClear_83E1
64 label Label_841A UpdateActorPositions_OnZero_841A
65 label Label_8434 UpdateActorPositions_OnNonzero_8434
66 label Label_845C UpdateRoundTimers
67 label Label_848D UpdateRoundTimers_OnNonzero_848D
68 label Label_84A1 UpdateRoundTimers_OnZero_84A1
69 label Label_84B1 UpdateRoundTimers_OnNonzero_84B1
70 label Label_84B5 UpdateRoundTimers_OnNonzero_84B5
71 label Label_84E9 UpdateRoundTimers_OnCarrySet_84E9
72 label Label_84EE UpdateRoundTimers_OnNonzero_84EE
73 label Label_84F4 UpdateRoundTimers_OnCarryClear_84F4
74 label Label_850F UpdateRoundTimers_OnZero_850F
75 label Label_851C UpdateRoundTimers_OnCarrySet_851C
76 label Label_851F UpdateRoundTimers_OnNonzero_851F
77 label Label_8522 UpdateRoundTimers_OnCarrySet_8522
78 label Label_8564 UpdateRoundTimers_OnZero_8564
79 label Label_856C PlayRoundChangeMusic
80 label Label_858F PlayRoundChangeMusic_OnNonzero_858F
81 label Label_8596 UpdateScrollTarget
82 label Label_8598 UpdateScrollTargetAlt
83 label Label_85A3 UpdateScrollTargetAlt_OnZero_85A3
84 label Label_85A8 UpdateScrollTargetAlt_OnNonzero_85A8
85 label Label_85DA UpdateScrollTargetAlt_OnNonzero_85DA
86 label Label_85EC UpdateScrollTargetAlt_JoinBranchPaths_85EC
87 label Label_8639 BeginVblankFrame
88 label Label_8644 ForceRenderingOff
89 label Label_8653 SetRenderingOffAndSignalVblank
90 label Label_865D UpdateRoundLogic
91 label Label_8682 UpdateRoundLogic_OnNonzero_8682
92 label Label_86A0 UpdateRoundLogic_JoinBranchPaths_86A0
93 label Label_86AA UpdateRoundLogic_JoinBranchPaths_86AA
94 label Label_86AD UpdateRoundLogic_OnNegative_86AD
95 label Label_86D8 NmiHandler_OnZero_86D8
96 label Label_86E3 NmiHandler_OnNonzero_86E3
97 label Label_86FA NmiHandler_OnZero_86FA
98 label Label_8703 NmiHandler_OnNegative_8703
99 label Label_8709 NmiHandler_OnZero_8709
100 label Label_8728 NmiHandler_OnCarrySet_8728
101 label Label_872F NmiHandler_OnNonzero_872F
102 label Label_8742 NmiHandler_OnNonzero_8742
103 label Label_8751 FinishNmiUpdates
104 label Label_8759 FinishNmiRegisters
105 label Label_8765 SetSoundSequenceChannel1
106 label Label_877C RunGameStateDispatcher
107 label Label_8787 RunGameStateDispatcher_JoinBranchPaths_8787
108 label Label_8795 RunGameStateDispatcher_OnNonzero_8795
109 label Label_87BF UpdateTimersAlt
110 label Label_87D1 PollControllerStart
111 label Label_87F1 PollControllerStart_JoinBranchPaths_87F1
112 label Label_87F2 UpdateFlashCounter
113 label Label_8801 UpdateFlashCounter_OnZero_8801
114 label Label_8803 UpdateFlashCounter_OnNonzero_8803
115 label Label_8819 UpdateFlashCounter_OnCarryClear_8819
116 label Label_8837 PlayDeathSequence
117 label Label_8848 PollControllerBits
118 label Label_885A PollControllerBits_JoinBranchPaths_885A
119 label Label_885B PollControllerAndAdvance
120 label Label_886C PollControllerBitsAlt
121 label Label_887C SignalVblankComplete
122 label Label_8881 SignalVblankComplete_JoinBranchPaths_8881
123 label Label_8882 PollControllerAndCheckRound
124 label Label_888D PollControllerAndCheckRound_OnZero_888D
125 label Label_8899 PollControllerAndCheckRound_OnCarrySet_8899
126 label Label_889D PollControllerAndCheckRound_OnNonzero_889D
127 label Label_88A4 BuildOamList
128 label Label_88AE BuildOamList_OnNonzero_88AE
129 label Label_88B0 EmitOamEntry
130 label Label_88EB EmitOamBlankEntry
131 label Label_88F3 EmitOamBlankEntry_JoinBranchPaths_88F3
132 label Label_88F4 EmitOamBlankEntry_OnZero_88F4
133 label Label_88F9 EmitOamFromTable
134 label Label_88FF EmitOamAtOffset
135 label Label_8909 EmitOamAtOffset_OnZero_8909
136 label Label_890F EmitOamAtOffset_JoinBranchPaths_890F
137 label Label_891B EmitOamAtOffset_OnZero_891B
138 label Label_892A EmitOamAtOffset_OnNonzero_892A
139 label Label_8936 FindFreeOamSlot
140 label Label_8938 FindFreeOamSlot_OnNonnegative_8938
141 label Label_8942 FindFreeOamSlot_OnZero_8942
142 label Label_8943 FindFreeOamSlot_JoinBranchPaths_8943
143 label Label_896A FindFreeOamSlot_JoinBranchPaths_896A
144 label Label_896B FindFreeOamSlot_OnZero_896B
145 label Label_897F FindFreeOamSlot_OnNonzero_897F
146 label Label_8986 CompactOamList
147 label Label_898A CompactOamList_OnNonnegative_898A
148 label Label_899D CompactOamList_OnZero_899D
149 label Label_899F CompactOamList_OnNonzero_899F
150 label Label_89A8 CompactOamList_OnZero_89A8
151 label Label_89AC CompactOamList_OnZero_89AC
152 label Label_89B0 CompactOamList_OnCarryClear_89B0
153 label Label_89B2 CompactOamList_OnNonzero_89B2
154 label Label_89B5 CompactOamList_OnNonzero_89B5
155 label Label_89B8 CompactOamList_OnNonzero_89B8
156 label Label_89CE ReadControllerAndInit
157 label Label_89EE ReadControllerAndInit_OnCarryClear_89EE
158 label Label_89F7 ReadControllerAndInit_OnNonzero_89F7
159 label Label_8A28 UpdateStageActors
160 label Label_8A5D UpdateStageActors_JoinBranchPaths_8A5D
161 label Label_8A5E SpawnStageActors
162 label Label_8A68 SpawnStageActors_OnCarryClear_8A68
163 label Label_8A74 SpawnStageActors_OnZero_8A74
164 label Label_8A84 SpawnStageActors_OnNonzero_8A84
165 label Label_8A93 SpawnStageActors_OnZero_8A93
166 label Label_8AA4 SpawnStageActors_JoinBranchPaths_8AA4
167 label Label_8AA5 SpawnStageActors_OnZero_8AA5
168 label Label_8AE1 SpawnStageActors_JoinBranchPaths_8AE1
169 label Label_8AE8 UpdateAttributeTable
170 label Label_8B07 ClearScrollLatch
171 label Label_8B0D ClearScrollLatch_OnNonzero_8B0D
172 label Label_8B20 WriteNametableTile
173 label Label_8B25 WriteNametableTile_OnNonzero_8B25
174 label Label_8B33 ClearAttributeRegion
175 label Label_8B37 ClearAttributeRegion_JoinBranchPaths_8B37
176 label Label_8B3B ClearAttributeRegion_OnNonnegative_8B3B
177 label Label_8B5F ClearAttributeRegion_OnCarryClear_8B5F
178 label Label_8B67 ClearAttributeRegion_OnZero_8B67
179 label Label_8B6D ClearAttributeRegion_JoinBranchPaths_8B6D
180 label Label_8B92 RenderHudDigits
181 label Label_8BBA RenderHudDigits_OnNonzero_8BBA
182 label Label_8BEF RenderHudDigitDescriptor
183 label Label_8BF8 SetRenderingOn
184 label Label_8BFF SetRenderingOn_OnNonnegative_8BFF
185 label Label_8C05 AdvanceAnimationSlot
186 label Label_8C0E QueueVramTransfer
187 label Label_8C11 QueueVramTransferAlt
188 label Label_8C3A QueueVramTransferAlt_OnNonnegative_8C3A
189 label Label_8C55 QueueVramTransferAlt_OnNonzero_8C55
190 label Label_8C65 ExecuteVramTransfer
191 label Label_8C72 ExecuteVramTransfer_OnNonzero_8C72
192 label Label_8C98 ExecuteVramTransfer_OnZero_8C98
193 label Label_8CB8 QueueVramDescriptor
194 label Label_9287 QueueVramDescriptor_Entry_9287
195 label Label_928D QueueVramDescriptor_JumpNext_928D
196 label Label_9293 QueueVramDescriptor_JumpNext_9293
197 label Label_929F QueueVramDescriptor_OnNonzero_929F
198 label Label_92AF QueueVramDescriptor_OnNonzero_92AF
199 label Label_92B2 QueueVramDescriptor_JumpNext_92B2
200 label Label_92CD QueueVramDescriptor_JumpNext_92CD
201 label Label_92E8 QueueVramDescriptor_OnZero_92E8
202 label Label_9329 QueueVramDescriptor_OnZero_9329
203 label Label_932C QueueVramDescriptor_JumpNext_932C
204 label Label_934B UpdateActorX
205 label Label_9354 UpdateActorX_JumpNext_9354
206 label Label_9371 UpdateActorTile
207 label Label_9374 UpdateActorTileAlt
208 label Label_937C UpdateActorTileAlt_JumpNext_937C
209 label Label_93A4 UpdateActorTileAlt_JumpNext_93A4
210 label Label_93C4 UpdateActorTileAlt_OnCarrySet_93C4
211 label Label_93CC UpdateActorTileAlt_JumpNext_93CC
212 label Label_93D0 UpdateActorTileAlt_OnZero_93D0
213 label Label_93D3 UpdateActorTileAlt_OnNonzero_93D3
214 label Label_9401 UpdateActorTileAlt_OnCarrySet_9401
215 label Label_9409 UpdateActorTileAlt_JumpNext_9409
216 label Label_941B UpdateActorTileAlt_JumpNext_941B
217 label Label_942C UpdateActorTileAlt_OnNegative_942C
218 label Label_9441 UpdateActorTileAlt_OnNonnegative_9441
219 label Label_9450 UpdateActorTileAlt_OnNonzero_9450
220 label Label_9451 UpdateActorTileAlt_OnCarrySet_9451
221 label Label_9454 UpdateActorTileAlt_OnCarryClear_9454
222 label Label_945B UpdateActorTileAlt_OnNegative_945B
223 label Label_9465 UpdateActorTileAlt_JumpNext_9465
224 label Label_946D UpdateActorTileAlt_JumpNext_946D
225 label Label_9477 UpdateActorTileAlt_JumpNext_9477
226 label Label_947D UpdateActorTileAlt_OnZero_947D
227 label Label_9480 UpdateActorTileAlt_JumpNext_9480
228 label Label_948F UpdateActorTileAlt_JumpNext_948F
229 label Label_9499 UpdateActorTileAlt_JumpNext_9499
230 label Label_94AA UpdateActorTileAlt_OnZero_94AA
231 label Label_94AD UpdateActorTileAlt_JumpNext_94AD
232 label Label_94B1 TestPlayerFacing
233 label Label_94C0 TestPlayerFacing_JumpNext_94C0
234 label Label_94C7 SelectActorSlot
235 label Label_94C8 SelectActorSlotAlt
236 label Label_94CF ClearActorPosition
237 label Label_94D7 ClearActorFields
238 label Label_94F3 ClearActorFields_JoinBranchPaths_94F3
239 label Label_94F6 ClearActorFields_OnNonzero_94F6
240 label Label_94FE SetActorFlag
241 label Label_950B SetActorFlag_JumpNext_950B
242 label Label_9513 SetActorFlag_JumpNext_9513
243 label Label_951F SetActorFlag_OnNonzero_951F
244 label Label_9522 SetActorFlag_JumpNext_9522
245 label Label_9535 SetActorFlag_OnNonzero_9535
246 label Label_9541 SetActorFlag_Return_9541
247 label Label_9551 SetActorFlag_OnNonzero_9551
248 label Label_9559 SetActorFlag_JumpNext_9559
249 label Label_9585 UpdateActorState
250 label Label_9590 UpdateActorState_OnNonzero_9590
251 label Label_95A5 UpdateActorState_OnCarryClear_95A5
252 label Label_95AE ComputeActorLeftEdge
253 label Label_95B8 ComputeActorLeftEdge_OnNonzero_95B8
254 label Label_95C9 ComputeActorLeftEdge_OnCarryClear_95C9
255 label Label_95D2 ComputeActorRightEdge
256 label Label_95D9 CompareActorToLimit
257 label Label_95DC CompareActorToLimit_Return_95DC
258 label Label_95E3 CompareActorToLimit_OnNonzero_95E3
259 label Label_9628 CompareActorToLimit_OnCarrySet_9628
260 label Label_963C CompareActorToLimit_OnCarrySet_963C
261 label Label_963E CompareActorToLimit_OnNonnegative_963E
262 label Label_9641 CompareActorToLimit_OnZero_9641
263 label Label_9644 CompareActorToLimit_JumpNext_9644
264 label Label_9653 SetActorTileFromPalette
265 label Label_9664 SetActorTileFromPalette_OnNonzero_9664
266 label Label_9667 StoreActorTile
267 label Label_966D StoreActorTile_Return_966D
268 label Label_9679 StoreActorTile_OnNegative_9679
269 label Label_968E StoreActorTile_OnNonnegative_968E
270 label Label_969D StoreActorTile_OnNonzero_969D
271 label Label_969E AdvanceActorCounter
272 label Label_96A6 AdvanceActorCounter_OnCarryClear_96A6
273 label Label_96AA SetActorTileValue
274 label Label_96B3 SetActorTileValue_OnNonzero_96B3
275 label Label_96B9 SetActorTileValue_OnNegative_96B9
276 label Label_96BC SetActorTileValue_JumpNext_96BC
277 label Label_96C2 SetActorTileValue_Continue_96C2
278 label Label_96C8 TestActorCollisionFlag
279 label Label_96CC TestActorCollisionFlag_OnZero_96CC
280 label Label_96CE TestActorCollisionFlag_OnZero_96CE
281 label Label_96EE TestActorCollisionFlag_OnCarryClear_96EE
282 label Label_96F7 ComputeActorLeftEdgeAlt
283 label Label_9701 ComputeActorLeftEdgeAlt_OnNonzero_9701
284 label Label_9719 ComputeActorLeftEdgeAlt_OnCarryClear_9719
285 label Label_9722 ComputeActorRightEdgeAlt
286 label Label_9729 TestActorRange
287 label Label_9731 TestActorRange_OnCarrySet_9731
288 label Label_9732 MoveActorByStep
289 label Label_975D MoveActorByStep_OnCarrySet_975D
290 label Label_975E MoveActorByStep_Return_975E
291 label Label_9766 MoveActorByStep_OnCarryClear_9766
292 label Label_979A MoveActorByStep_OnNonzero_979A
293 label Label_97A0 MoveActorByStep_OnNonzero_97A0
294 label Label_97BC SetActorAnimation63
295 label Label_97C0 SetActorAnimation62
296 label Label_97C4 SetActorAnimation61
297 label Label_97C6 SetActorAnimation61_OnNonzero_97C6
298 label Label_97D5 UpdateActorAnimation
299 label Label_97FB UpdateActorAnimation_OnZero_97FB
300 label Label_97FC TestAnimationSlot
301 label Label_9800 TestAnimationSlot_JoinBranchPaths_9800
302 label Label_9802 TestAnimationSlot_OnNonzero_9802
303 label Label_981C TestAnimationSlot_OnCarryClear_981C
304 label Label_982A ComputeActorLeftEdgeAt
305 label Label_9834 ComputeActorLeftEdgeAt_OnNonzero_9834
306 label Label_984A ComputeActorLeftEdgeAt_OnCarryClear_984A
307 label Label_9858 ComputeActorRightEdgeAt
308 label Label_985F TestActorValue
309 label Label_986A TestActorValue_Return_986A
310 label Label_9875 TestActorValue_OnCarryClear_9875
311 label Label_98A7 TestActorValue_OnCarryClear_98A7
312 label Label_98AA TestActorValue_JoinBranchPaths_98AA
313 label Label_98AD TestActorValue_JoinBranchPaths_98AD
314 label Label_98B0 TestActorValue_JumpNext_98B0
315 label Label_98B7 TestActorValue_OnNonzero_98B7
316 label Label_98BE TestActorValue_JoinBranchPaths_98BE
317 label Label_98C1 TestActorValue_OnNonzero_98C1
318 label Label_98D8 TestActorValue_OnCarryClear_98D8
319 label Label_98E6 ComputeActorLeftEdgeAlt2
320 label Label_98F0 ComputeActorLeftEdgeAlt2_OnNonzero_98F0
321 label Label_9903 ComputeActorLeftEdgeAlt2_OnCarryClear_9903
322 label Label_9911 UpdateActorTileFromIndex
323 label Label_9918 UpdateActorTileFromIndexAlt
324 label Label_9948 UpdateActorTileFromIndexAlt_JoinBranchPaths_9948
325 label Label_994B UpdateActorTileFromIndexAlt_JumpNext_994B
326 label Label_996E UpdateActorTileFromIndexAlt_JumpNext_996E
327 label Label_997C UpdateActorTileFromIndexAlt_JumpNext_997C
328 label Label_9989 UpdateActorTileFromIndexAlt_OnNonzero_9989
329 label Label_9994 UpdateActorTileFromIndexAlt_OnNonzero_9994
330 label Label_99A0 UpdateActorTileFromIndexAlt_OnNonzero_99A0
331 label Label_99A3 SetSoundSequenceChannel2
332 label Label_99B0 SetSoundSequenceChannel2_Return_99B0
333 label Label_99B7 SetSoundSequenceChannel2_JumpNext_99B7
334 label Label_99D7 SetSoundSequenceChannel2_OnNegative_99D7
335 label Label_99E2 LookupActorTileId
336 label Label_99E4 LookupActorTileIdAlt
337 label Label_9A02 LookupActorTileIdAlt_OnCarryClear_9A02
338 label Label_9A24 StoreActorCoordinates
339 label Label_9A2E StoreActorCoordinatesAlt
340 label Label_9A36 StoreActorCoordinatesAlt_OnNonnegative_9A36
341 label Label_9A3F FlipActorFacing
342 label Label_9A4E SpawnActorPair
343 label Label_9A6B SpawnActorPairAlt
344 label Label_9ABC SpawnActorPairAlt_OnNonzero_9ABC
345 label Label_9ACE SpawnActorPairAlt_OnNonzero_9ACE
346 label Label_9AD3 SpawnActorPairAlt_JoinBranchPaths_9AD3
347 label Label_9AD8 SpawnActorPairAlt_OnNonzero_9AD8
348 label Label_9AE8 RunBytecodeInterpreter
349 label Label_9B05 DispatchThroughPointer
350 label Label_9B08 DispatchThroughPointer_JoinBranchPaths_9B08
351 label Label_9B18 DispatchThroughPointer_OnNonzero_9B18
352 label Label_9B25 RunBytecodeProgram
353 label Label_9B4C RunBytecodeProgram_OnNonnegative_9B4C
354 label Label_9B64 RunBytecodeProgram_OnNonnegative_9B64
355 label Label_9B72 RunBytecodeProgram_OnNonnegative_9B72
356 label Label_9BA1 RunBytecodeProgram_OnZero_9BA1
357 label Label_9BB0 RunBytecodeProgram_OnNonzero_9BB0
358 label Label_9BB4 RunBytecodeProgram_OnNonzero_9BB4
359 label Label_9BD9 RunBytecodeProgram_OnNonzero_9BD9
360 label Label_9BDD RunBytecodeProgram_OnNonzero_9BDD
361 label Label_9BF3 RunBytecodeProgram_OnCarryClear_9BF3
362 label Label_9C2C RunBytecodeProgram_OnZero_9C2C
363 label Label_9C2E RunBytecodeProgram_OnNonnegative_9C2E
364 label Label_9C4C RunBytecodeProgram_OnNonnegative_9C4C
365 label Label_9C52 RunBytecodeProgram_OnNonnegative_9C52
366 label Label_9C66 RunBytecodeProgram_OnCarryClear_9C66
367 label Label_9C71 RunBytecodeProgram_OnZero_9C71
368 label Label_9C73 RunBytecodeProgram_JoinBranchPaths_9C73
369 label Label_9C84 RunBytecodeProgram_OnNonzero_9C84
370 label Label_9C8D RunBytecodeProgram_OnCarryClear_9C8D
371 label Label_9C91 RunBytecodeProgram_JoinBranchPaths_9C91
372 label Label_9CAD RunBytecodeProgram_Return_9CAD
373 label Label_9CBB ResetBytecodeState
374 label Label_9CDB ResetBytecodeState_OnCarryClear_9CDB
375 label Label_9CE5 ResetBytecodeState_OnCarryClear_9CE5
376 label Label_9D04 ResetBytecodeState_OnNonnegative_9D04
377 label Label_9D0D ResetBytecodeState_OnCarrySet_9D0D
378 label Label_9D10 ResetBytecodeState_OnNonzero_9D10
379 label Label_9D39 ResetBytecodeState_OnZero_9D39
380 label Label_9D4A ResetBytecodeState_OnZero_9D4A
381 label Label_9D4E CopyActorCoordinates
382 label Label_9D61 CopyActorCoordinates_OnCarryClear_9D61
383 label Label_9DA2 CopyActorCoordinates_OnNonzero_9DA2
384 label Label_9DB6 CopyActorCoordinates_OnZero_9DB6
385 label Label_9DBB CopyActorCoordinates_OnNonzero_9DBB
386 label Label_9DD0 CopyActorCoordinates_OnCarryClear_9DD0
387 label Label_9DD4 CopyActorCoordinates_OnCarryClear_9DD4
388 label Label_9DD6 SetActorBounds
389 label Label_9DE6 LoadActorTileIndex
390 label Label_9E02 LoadActorTileIndex_OnCarrySet_9E02
391 label Label_9E19 LoadActorTileIndex_OnZero_9E19
392 label Label_9E37 LoadActorTileIndex_OnNonzero_9E37
393 label Label_9E4B LoadActorTileIndex_OnZero_9E4B
394 label Label_9E50 LoadActorTileIndex_OnNonzero_9E50
395 label Label_9E65 LoadActorTileIndex_OnCarryClear_9E65
396 label Label_9E69 LoadActorTileIndex_OnCarryClear_9E69
397 label Label_9E6B LoadActorTileIndex_OnNonzero_9E6B
398 label Label_9E6E UpdateActorFacing
399 label Label_9E7F QueueNametableWrite
400 label Label_9E87 QueueNametableWrite_OnNonzero_9E87
401 label Label_9E89 QueueNametableWrite_OnNonnegative_9E89
402 label Label_9F14 FlushNametableWrite
403 label Label_9F2A FlushNametableWrite_JoinBranchPaths_9F2A
404 label Label_9F4B UpdateActorMovement
405 label Label_9F54 MoveActorByOpcode
406 label Label_9F7F MoveActorByOpcode_JoinBranchPaths_9F7F
407 label Label_9F83 MoveActorByOpcode_JoinBranchPaths_9F83
408 label Label_9FAC MoveActorByOpcode_OnCarryClear_9FAC
409 label Label_9FB8 MoveActorByOpcode_OnNonzero_9FB8
410 label Label_9FBA MoveActorByOpcode_JoinBranchPaths_9FBA
411 label Label_9FBB MoveActorByOpcode_Return_9FBB
412 label Label_9FC2 MoveActorByOpcode_Continue_9FC2
413 label Label_9FC9 MoveActorByOpcode_Continue_9FC9
414 label Label_9FD0 MoveActorByOpcode_Continue_9FD0
415 label Label_9FD7 MoveActorByOpcode_Continue_9FD7
416 label Label_9FDF AddToNametableValue
417 label Label_9FEF AddToNametableValue_Return_9FEF
418 label Label_9FFA AddToNametableValue_JumpNext_9FFA
419 label Label_A002 SubtractFromNametableValue
420 label Label_A012 SubtractFromNametableValue_Return_A012
421 label Label_A01D ProcessBytecodeOpcode
422 label Label_A060 ProcessBytecodeOpcode_OnCarrySet_A060
423 label Label_A062 ProcessBytecodeOpcode_JoinBranchPaths_A062
424 label Label_A07B ProcessBytecodeOpcode_JoinBranchPaths_A07B
425 label Label_A085 ComputeBytecodeOffset
426 label Label_A08B ComputeBytecodeOffset_OnNonzero_A08B
427 label Label_A09F ComputeBytecodeOffset_OnCarryClear_A09F
428 label Label_A0A5 ResetBytecodeAccumulator
429 label Label_A0AD ResetBytecodeAccumulator_OnNonzero_A0AD
430 label Label_A0C2 ResetBytecodeAccumulator_OnCarryClear_A0C2
431 label Label_A0C6 ResetBytecodeAccumulatorAlt
432 label Label_A0CE ResetBytecodeAccumulatorAlt_OnNonzero_A0CE
433 label Label_A0EC ResetBytecodeAccumulatorAlt_OnCarryClear_A0EC
434 label Label_A0F4 AdvanceBytecodeProgram
435 label Label_A0FB ResetBytecodeStateAlt
436 label Label_A105 ResetBytecodeStateAlt_OnNonzero_A105
437 label Label_A122 ResetBytecodeStateAlt_OnCarryClear_A122
438 label Label_A12E ComputeActorTileRow
439 label Label_A14F ComputeActorTileRow_OnNonnegative_A14F
440 label Label_A157 ComputeActorTileRow_JoinBranchPaths_A157
441 label Label_A15D ResetBytecodePointers
442 label Label_A165 ResetBytecodePointers_OnNonzero_A165
443 label Label_A179 ResetBytecodePointers_OnCarryClear_A179
444 label Label_A17F RunActorScript
445 label Label_A1A5 RunActorScript_OnCarrySet_A1A5
446 label Label_A1C3 RunActorScript_OnZero_A1C3
447 label Label_A1E3 RunActorScript_OnNonnegative_A1E3
448 label Label_A1F1 RunActorScript_OnNonnegative_A1F1
449 label Label_A201 RunActorScript_OnNonzero_A201
450 label Label_A246 RunActorScript_OnZero_A246
451 label Label_A250 LoadActorConfigByte
452 label Label_A253 ComputeActorConfigOffset
453 label Label_A25F CopyConfigBytes
454 label Label_A261 CopyConfigBytes_OnNonnegative_A261
455 label Label_A270 LoadActorConfigRecord
456 label Label_A28D LoadActorConfigRecord_JoinBranchPaths_A28D
457 label Label_A298 CompareConfigValue
458 label Label_A2BD CompareConfigValue_JoinBranchPaths_A2BD
459 label Label_A2C8 ReturnFromConfigLoad
460 label Label_A2C9 LoadActorConfigFields
461 label Label_A2D8 LoadActorConfigFields_OnZero_A2D8
462 label Label_A2EB LoadActorConfigFields_OnNegative_A2EB
463 label Label_A2F1 LoadActorConfigFields_OnNonzero_A2F1
464 label Label_A305 LoadActorConfigFields_OnZero_A305
465 label Label_A30B LoadActorConfigFields_OnNonzero_A30B
466 label Label_A316 StoreActorPaletteByte
467 label Label_A32A StoreActorPaletteByte_OnZero_A32A
468 label Label_A32C StoreActorControlByte
469 label Label_A334 StoreActorControlByte_OnZero_A334
470 label Label_A338 ReadActorConfigByte
471 label Label_A388 ReadActorConfigByte_JoinBranchPaths_A388
472 label Label_A3A5 ReadActorConfigByte_JoinBranchPaths_A3A5
473 label Label_A3B1 ReadActorConfigByte_OnNonzero_A3B1
474 label Label_A3C9 ReadActorConfigByte_OnCarrySet_A3C9
475 label Label_A3E9 ReadActorConfigByte_OnCarrySet_A3E9
476 label Label_A3F1 ReadActorConfigByte_OnNonzero_A3F1
477 label Label_A3FA ReadActorConfigByte_OnNonzero_A3FA
478 label Label_A406 ReadActorConfigByte_JoinBranchPaths_A406
479 label Label_A40A ReadActorConfigByte_OnCarrySet_A40A
480 label Label_A40D ReadActorConfigByte_OnNonzero_A40D
481 label Label_A418 ReadActorConfigByte_OnZero_A418
482 label Label_A423 ReadActorConfigByte_OnNonzero_A423
483 label Label_A428 ReadActorConfigByte_OnCarrySet_A428
484 label Label_A430 ReadActorConfigByte_JoinBranchPaths_A430
485 label Label_A435 CompareActorConfigValue
486 label Label_A44E CompareActorConfigValue_OnZero_A44E
487 label Label_A459 CompareActorConfigValue_OnZero_A459
488 label Label_A464 CompareActorConfigValue_OnZero_A464
489 label Label_A46D CompareActorConfigValue_OnNonzero_A46D
490 label Label_A46F StoreActorConfigResult
491 label Label_A475 StoreActorConfigResult_JoinBranchPaths_A475
492 label Label_A482 LoadActorConfigAlt
493 label Label_A48D LoadActorConfigAlt_OnZero_A48D
494 label Label_A49B LoadActorConfigAlt_OnZero_A49B
495 label Label_A49F StoreActorConfigResultAlt
496 label Label_A4A5 StoreActorConfigResultAlt_OnZero_A4A5
497 label Label_A4AA LoadActorFacingFlag
498 label Label_A4B5 LoadActorFacingFlag_OnNonzero_A4B5
499 label Label_A4BA LoadActorFacingFlag_OnCarryClear_A4BA
500 label Label_A4C2 LoadActorFacingFlag_JoinBranchPaths_A4C2
501 label Label_A4C7 LoadActorConfigBlock
502 label Label_A4DF TestSoundChannelState
503 label Label_A4F1 TestSoundChannelState_OnNonzero_A4F1
504 label Label_A4F2 SetSoundSequenceChannel2Alt
505 label Label_A4FF FlipObjectIndex
506 label Label_A508 LookupObjectIndex
507 label Label_A512 UpdateObjectSlots
508 label Label_A51B AdvanceObjectSlot
509 label Label_A522 AdvanceObjectSlot_OnNonzero_A522
510 label Label_A52D AdvanceObjectSlot_OnCarrySet_A52D
511 label Label_A532 AdvanceObjectSlot_OnCarryClear_A532
512 label Label_A583 AdvanceObjectSlot_OnNegative_A583
513 label Label_A5DD WriteNametableBytes
514 label Label_A5DF WriteNametableBytes_OnNonnegative_A5DF
515 label Label_A660 SetSoundSequenceChannel4
516 label Label_A67F SetSoundSequenceChannel4_OnZero_A67F
517 label Label_A68E UpdateObjectList
518 label Label_A695 UpdateObjectListEntry
519 label Label_A6BE UpdateObjectListEntry_OnNegative_A6BE
520 label Label_A6DF UpdateObjectListEntry_OnNonzero_A6DF
521 label Label_A6EB UpdateObjectListEntry_OnZero_A6EB
522 label Label_A6EF UpdateObjectListEntry_OnZero_A6EF
523 label Label_A6F8 UpdateObjectCollisions
524 label Label_A70D UpdateObjectCollisions_OnNonzero_A70D
525 label Label_A714 UpdateObjectCollisions_OnNonzero_A714
526 label Label_A728 UpdateObjectCollisions_OnNonzero_A728
527 label Label_A729 UpdateObjectCollisions_OnCarryClear_A729
528 label Label_A73D UpdateObjectCollisions_OnNonzero_A73D
529 label Label_A745 UpdateObjectCollisions_OnNonzero_A745
530 label Label_A758 UpdateObjectCollisions_OnNonzero_A758
531 label Label_A75D UpdateObjectCollisions_OnNonzero_A75D
532 label Label_A773 UpdateObjectCollisions_OnCarryClear_A773
533 label Label_A77F UpdateObjectCollisions_OnCarryClear_A77F
534 label Label_A78F UpdateObjectCollisions_JoinBranchPaths_A78F
535 label Label_A79B UpdateObjectCollisions_OnZero_A79B
536 label Label_A79C UpdateObjectCollisions_OnZero_A79C
537 label Label_A79F CheckObjectScroll
538 label Label_A7B0 CheckObjectScroll_OnNonzero_A7B0
539 label Label_A7B8 CheckObjectScroll_OnZero_A7B8
540 label Label_A7BF CheckObjectScroll_OnNonnegative_A7BF
541 label Label_A7CA CheckObjectScroll_OnNegative_A7CA
542 label Label_A7E1 CheckObjectScroll_OnNonzero_A7E1
543 label Label_A7E8 CheckObjectScroll_OnNonzero_A7E8
544 label Label_A7FD CheckObjectScroll_JoinBranchPaths_A7FD
545 label Label_A800 CheckObjectScroll_OnNonnegative_A800
546 label Label_A82F ClearScrollLatchAlt
547 label Label_A833 ClearScrollLatchAlt_OnCarryClear_A833
548 label Label_A834 UpdateObjectSprite
549 label Label_A842 UpdateObjectSprite_OnCarryClear_A842
550 label Label_A856 UpdateObjectSprite_OnCarrySet_A856
551 label Label_A862 UpdateObjectSprite_OnZero_A862
552 label Label_A884 SetObjectFlags
553 label Label_A89D SetObjectFlags_OnCarryClear_A89D
554 label Label_A8D1 AdvanceObjectFrame
555 label Label_A8E9 TestObjectActive
556 label Label_A8F9 TestObjectActive_OnNonzero_A8F9
557 label Label_A916 TestObjectActive_OnNonnegative_A916
558 label Label_A936 TestObjectActive_OnNonzero_A936
559 label Label_A949 UpdateObjectAnimations
560 label Label_A952 UpdateObjectAnimation
561 label Label_A982 UpdateObjectAnimation_OnCarryClear_A982
562 label Label_A991 UpdateObjectAnimation_JoinBranchPaths_A991
563 label Label_A992 UpdateObjectTimer
564 label Label_A99E DecrementObjectCounter
565 label Label_A9A4 DecrementObjectCounter_OnZero_A9A4
566 label Label_A9AA DecrementObjectCounter_JoinBranchPaths_A9AA
567 label Label_A9AB UpdateObjectState
568 label Label_A9C9 UpdateObjectState_OnCarrySet_A9C9
569 label Label_A9CD UpdateObjectState_OnZero_A9CD
570 label Label_A9D6 UpdateObjectState_OnNegative_A9D6
571 label Label_A9D8 ToggleScrollRegionFlip
572 label Label_A9E9 ToggleScrollRegionFlip_OnNonzero_A9E9
573 label Label_A9EA ToggleScrollRegionFlip_OnCarrySet_A9EA
574 label Label_A9FF BuildObjectList
575 label Label_AA55 ToggleScrollRegionFlip_OnCarrySet_AA55
576 label Label_AA56 ReadControllers
577 label Label_AA63 ReadControllerShiftRegister
578 label Label_AA69 ReadControllerShiftRegister_OnNonzero_AA69
579 label Label_AA82 ReadControllerShiftRegister_JoinBranchPaths_AA82
580 label Label_AA98 ReadControllerShiftRegister_OnZero_AA98
581 label Label_AA9D ReadControllerShiftRegister_OnCarrySet_AA9D
582 label Label_AAA1 ReadControllerShiftRegister_OnCarrySet_AAA1
583 label Label_AAA8 ReadControllerShiftRegister_OnCarrySet_AAA8
584 label Label_AAAE ReadControllerShiftRegister_OnCarryClear_AAAE
585 label Label_AAB4 ReadControllerShiftRegister_OnCarrySet_AAB4
586 label Label_AAB8 StoreControllerButtonBits
587 label Label_AAC0 StoreControllerButtonBits_OnZero_AAC0
588 label Label_AACC StoreControllerButtonBits_OnZero_AACC
589 label Label_AACD EnableRendering
590 label Label_AADC DisableRenderingAndClearNametables
591 label Label_AAEF ClearNametablePattern
592 label Label_AAFF ClearNametablePattern_OnNonzero_AAFF
593 label Label_AB0B ClearNametablePattern_OnNonzero_AB0B
594 label Label_AB68 CopyPaletteFromTable
595 label Label_AB7D CopyPaletteFromTable_OnNonnegative_AB7D
596 label Label_AB98 LoadShadowOamBlock
597 label Label_ABA3 FillShadowOamBlock
598 label Label_ABA8 FillShadowOamBlock_OnNonnegative_ABA8
599 label Label_ABB1 UploadPalette
600 label Label_ABC4 UploadPalette_OnCarryClear_ABC4
601 label Label_ABE4 ApplyPpuScrollAndControl
602 label Label_ABF7 ShiftAccumulatorRight4
603 label Label_ABFC ClearOamShadow
604 label Label_AC03 ClearOamShadow_OnNonzero_AC03
605 label Label_AC0D SelectLevelVramWriter
606 label Label_AC3B SetLevelVramStream
607 label Label_AC43 FillAttributeBlock
608 label Label_AC4C WriteAttributeBlock
609 label Label_AC56 WriteAttributeBlock_OnNonzero_AC56
610 label Label_AC62 LoadAttributeStream
611 label Label_AC78 SetPpuAddressHighAnd40
612 label Label_AC82 WriteCompressedVramStream
613 label Label_AC88 AdvanceSourceByte
614 label Label_AC96 DecodeVramStreamToken
615 label Label_AC9E AdvanceSourceByte_OnCarrySet_AC9E
616 label Label_ACA1 AdvanceSourceByte_OnZero_ACA1
617 label Label_ACA7 WriteVramRunToken
618 label Label_ACB5 AdvanceSourceByte_OnNonzero_ACB5
619 label Label_ACC9 AdvanceDestinationWord
620 label Label_ACD7 AdvanceCountWord
621 label Label_ACE5 WithRenderingEnabled
622 label Label_ACF5 WriteCompressedVramBlocks
623 label Label_AD01 WriteCompressedVramBlocks_OnNonzero_AD01
624 label Label_AD19 ComputeCollisionBits
625 label Label_AD36 ComputePlayerOverlapBits
626 label Label_AD71 ComputePlayerOverlapBits_OnCarrySet_AD71
627 label Label_AD73 ComputePlayerOverlapBits_OnNonzero_AD73
628 label Label_AD7A ComputePlayerOverlapBits_JoinBranchPaths_AD7A
629 label Label_AD84 ComputePlayerOverlapBits_OnCarrySet_AD84
630 label Label_AD8B ComputePlayerOverlapBits_OnZero_AD8B
631 label Label_AD91 ComputePlayerOverlapBits_OnCarrySet_AD91
632 label Label_AD94 ComputePlayerOverlapBits_JoinBranchPaths_AD94
633 label Label_ADAD ComputePlayerOverlapBits_OnNonnegative_ADAD
634 label Label_ADAF ComputePlayerOverlapBits_OnNonzero_ADAF
635 label Label_ADB1 ComputePlayerOverlapBits_OnCarryClear_ADB1
636 label Label_ADC2 ComputePlayerOverlapBits_JoinBranchPaths_ADC2
637 label Label_AE01 ComputePlayerOverlapBits_OnCarrySet_AE01
638 label Label_AE03 ComputePlayerOverlapBits_OnNonzero_AE03
639 label Label_AE0B ComputePlayerOverlapBits_OnNegative_AE0B
640 label Label_AE0F ComputePlayerOverlapBits_JoinBranchPaths_AE0F
641 label Label_AE11 ComputePlayerOverlapBits_OnNonzero_AE11
642 label Label_AE15 ComputePlayerOverlapBits_OnCarryClear_AE15
643 label Label_AE16 ComputePlayerOverlapBits_OnZero_AE16
644 label Label_AE45 SetDefaultOverlapBits
645 label Label_AE51 SetDefaultOverlapBits_OnNonzero_AE51
646 label Label_AE53 SetDefaultOverlapBits_OnNonzero_AE53
647 label Label_AE56 SetDefaultOverlapBits_OnCarryClear_AE56
648 label Label_AE63 SetDefaultOverlapBits_OnCarrySet_AE63
649 label Label_AE72 SetDefaultOverlapBits_OnCarrySet_AE72
650 label Label_AE80 SetDefaultOverlapBits_OnNegative_AE80
651 label Label_AE82 SetDefaultOverlapBits_OnNonzero_AE82
652 label Label_AE88 SetDefaultOverlapBits_OnCarrySet_AE88
653 label Label_AE90 SetDefaultOverlapBits_OnNegative_AE90
654 label Label_AE92 SetDefaultOverlapBits_OnNonzero_AE92
655 label Label_AE96 SetDefaultOverlapBits_OnNonzero_AE96
656 label Label_AE9B ComputeEdgeOverlapBits
657 label Label_AEBE ComputeEdgeOverlapBits_OnNonzero_AEBE
658 label Label_AECA ComputeEdgeOverlapBits_JoinBranchPaths_AECA
659 label Label_AEDC ComputeEdgeOverlapBits_JoinBranchPaths_AEDC
660 label Label_AEE3 ComputeEdgeOverlapBits_OnZero_AEE3
661 label Label_AEE9 ComputeEdgeOverlapBits_JoinBranchPaths_AEE9
662 label Label_AEEA ComputeEdgeOverlapBits_JoinBranchPaths_AEEA
663 label Label_AEFA ComputeEdgeOverlapBits_OnZero_AEFA
664 label Label_AF01 ComputeEdgeOverlapBits_JoinBranchPaths_AF01
665 label Label_AF24 ComputeEdgeOverlapBits_JoinBranchPaths_AF24
666 label Label_AF25 InitializeSoundEngine
667 label Label_AF3B UpdateSoundFrame
668 label Label_AF40 UpdateAllSoundChannels
669 label Label_AF43 UpdateSoundChannel
670 label Label_AF55 AdvanceSoundChannelNote
671 label Label_AF68 UpdateSoundChannel_JoinBranchPaths_AF68
672 label Label_AF69 WriteSoundChannelState
673 label Label_AF6B RebuildApuEnableMask
674 label Label_AF73 StartSoundChannelNote
675 label Label_AFAB AdvanceSoundSequencePointer
676 label Label_AFC5 ComputeEnvelopeMask
677 label Label_AFD5 ComputeEnvelopeMask_OnZero_AFD5
678 label Label_AFD9 ComputeTonePeriod
679 label Label_B000 ShiftNoteTableIndex
680 label Label_B007 WriteToneRegisters
681 label Label_B028 ComputeTonePeriod_OnCarrySet_B028
682 label Label_B029 WriteFixedToneRegisters
683 label Label_B036 ComputeTonePeriod_OnCarrySet_B036
684 label Label_B037 ComputeTonePeriod_OnCarrySet_B037
685 label Label_B03A ReadNoteDuration
686 label Label_B049 StoreNoteDuration
687 label Label_B058 ReadNoteDuration_OnZero_B058
688 label Label_B059 StoreShortNoteDuration
689 label Label_B05D BuildApuChannelMask
690 label Label_B062 WriteApuEnable
691 label Label_B069 WriteApuEnable_OnNegative_B069
692 label Label_B06C ApplySoundCommand
693 label Label_B083 WriteApuControlRegister
694 label Label_B08C AdvanceSoundSequenceStep
695 label Label_B08E AdvanceSoundSequenceStepAlt
696 label Label_B095 ReturnFromSoundCommand
697 label Label_B096 ReadLoopFlag
698 label Label_B09D HandleNoteTerminator
699 label Label_B0A9 HandleSustainCounter
700 label Label_B0B3 LoadSoundSequenceStep
701 label Label_B0BB LoadSoundSequenceStep_OnCarrySet_B0BB
702 label Label_B0C6 DecrementSustainCounter
+7 -3
View File
@@ -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;
}
+169 -2
View File
@@ -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
File diff suppressed because it is too large. Load diff
+774
View File
@@ -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
+7 -1
View File
@@ -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:
+1
View File
@@ -0,0 +1 @@
../M.U.S.C.L.E. (U).nes
+228
View File
@@ -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
1 0x8000 Reset
2 0x800E WaitForFirstPpuWarmup
3 0x8019 WaitForSecondPpuWarmup
4 0x802C InitializeGameState
5 0x8052 UpdateNametableFromStream
6 0x80AC StartStageSequence
7 0x8132 UpdateFadeFlashSprites
8 0x8164 InitializeRound
9 0x8226 MainGameLoop
10 0x82AC DivideBy20
11 0x82E1 SilenceSoundChannels1And3
12 0x82ED SilenceSoundChannel3
13 0x82FA StartIntroMusic
14 0x82FF StartMusicSequence
15 0x832A UpdateHudTallyTiles
16 0x8353 UpdateScoreTallyDigits
17 0x8372 WriteScoreTallyDigits
18 0x8399 LoadOamShadowFromTable
19 0x83A7 UpdateActorPositions
20 0x845C UpdateRoundTimers
21 0x856C PlayRoundChangeMusic
22 0x8596 UpdateScrollTarget
23 0x8598 UpdateScrollTargetAlt
24 0x8639 BeginVblankFrame
25 0x8644 ForceRenderingOff
26 0x8653 SetRenderingOffAndSignalVblank
27 0x865D UpdateRoundLogic
28 0x86CB NmiHandler
29 0x8751 FinishNmiUpdates
30 0x8759 FinishNmiRegisters
31 0x8764 IrqHandler
32 0x8765 SetSoundSequenceChannel1
33 0x877C RunGameStateDispatcher
34 0x87BF UpdateTimersAlt
35 0x87D1 PollControllerStart
36 0x87F2 UpdateFlashCounter
37 0x8837 PlayDeathSequence
38 0x8848 PollControllerBits
39 0x885B PollControllerAndAdvance
40 0x886C PollControllerBitsAlt
41 0x887C SignalVblankComplete
42 0x8882 PollControllerAndCheckRound
43 0x88A4 BuildOamList
44 0x88B0 EmitOamEntry
45 0x88EB EmitOamBlankEntry
46 0x88F9 EmitOamFromTable
47 0x88FF EmitOamAtOffset
48 0x8936 FindFreeOamSlot
49 0x8986 CompactOamList
50 0x89CE ReadControllerAndInit
51 0x8A28 UpdateStageActors
52 0x8A5E SpawnStageActors
53 0x8AE8 UpdateAttributeTable
54 0x8B07 ClearScrollLatch
55 0x8B20 WriteNametableTile
56 0x8B33 ClearAttributeRegion
57 0x8B92 RenderHudDigits
58 0x8BEF RenderHudDigitDescriptor
59 0x8BF8 SetRenderingOn
60 0x8C05 AdvanceAnimationSlot
61 0x8C0E QueueVramTransfer
62 0x8C11 QueueVramTransferAlt
63 0x8C65 ExecuteVramTransfer
64 0x8CB8 QueueVramDescriptor
65 0x934B UpdateActorX
66 0x9371 UpdateActorTile
67 0x9374 UpdateActorTileAlt
68 0x94B1 TestPlayerFacing
69 0x94C7 SelectActorSlot
70 0x94C8 SelectActorSlotAlt
71 0x94CF ClearActorPosition
72 0x94D7 ClearActorFields
73 0x94FE SetActorFlag
74 0x9585 UpdateActorState
75 0x95AE ComputeActorLeftEdge
76 0x95D2 ComputeActorRightEdge
77 0x95D9 CompareActorToLimit
78 0x9653 SetActorTileFromPalette
79 0x9667 StoreActorTile
80 0x969E AdvanceActorCounter
81 0x96AA SetActorTileValue
82 0x96C8 TestActorCollisionFlag
83 0x96F7 ComputeActorLeftEdgeAlt
84 0x9722 ComputeActorRightEdgeAlt
85 0x9729 TestActorRange
86 0x9732 MoveActorByStep
87 0x97BC SetActorAnimation63
88 0x97C0 SetActorAnimation62
89 0x97C4 SetActorAnimation61
90 0x97D5 UpdateActorAnimation
91 0x97FC TestAnimationSlot
92 0x982A ComputeActorLeftEdgeAt
93 0x9858 ComputeActorRightEdgeAt
94 0x985F TestActorValue
95 0x98E6 ComputeActorLeftEdgeAlt2
96 0x9911 UpdateActorTileFromIndex
97 0x9918 UpdateActorTileFromIndexAlt
98 0x99A3 SetSoundSequenceChannel2
99 0x99E2 LookupActorTileId
100 0x99E4 LookupActorTileIdAlt
101 0x9A24 StoreActorCoordinates
102 0x9A2E StoreActorCoordinatesAlt
103 0x9A3F FlipActorFacing
104 0x9A4E SpawnActorPair
105 0x9A6B SpawnActorPairAlt
106 0x9AE8 RunBytecodeInterpreter
107 0x9B05 DispatchThroughPointer
108 0x9B25 RunBytecodeProgram
109 0x9CBB ResetBytecodeState
110 0x9D4E CopyActorCoordinates
111 0x9DD6 SetActorBounds
112 0x9DE6 LoadActorTileIndex
113 0x9E6E UpdateActorFacing
114 0x9E7F QueueNametableWrite
115 0x9F14 FlushNametableWrite
116 0x9F4B UpdateActorMovement
117 0x9F54 MoveActorByOpcode
118 0x9FDF AddToNametableValue
119 0xA002 SubtractFromNametableValue
120 0xA01D ProcessBytecodeOpcode
121 0xA085 ComputeBytecodeOffset
122 0xA0A5 ResetBytecodeAccumulator
123 0xA0C6 ResetBytecodeAccumulatorAlt
124 0xA0F4 AdvanceBytecodeProgram
125 0xA0FB ResetBytecodeStateAlt
126 0xA12E ComputeActorTileRow
127 0xA15D ResetBytecodePointers
128 0xA17F RunActorScript
129 0xA250 LoadActorConfigByte
130 0xA253 ComputeActorConfigOffset
131 0xA25F CopyConfigBytes
132 0xA270 LoadActorConfigRecord
133 0xA298 CompareConfigValue
134 0xA2C8 ReturnFromConfigLoad
135 0xA2C9 LoadActorConfigFields
136 0xA316 StoreActorPaletteByte
137 0xA32C StoreActorControlByte
138 0xA338 ReadActorConfigByte
139 0xA435 CompareActorConfigValue
140 0xA46F StoreActorConfigResult
141 0xA482 LoadActorConfigAlt
142 0xA49F StoreActorConfigResultAlt
143 0xA4AA LoadActorFacingFlag
144 0xA4C7 LoadActorConfigBlock
145 0xA4DF TestSoundChannelState
146 0xA4F2 SetSoundSequenceChannel2Alt
147 0xA4FF FlipObjectIndex
148 0xA508 LookupObjectIndex
149 0xA512 UpdateObjectSlots
150 0xA51B AdvanceObjectSlot
151 0xA5DD WriteNametableBytes
152 0xA660 SetSoundSequenceChannel4
153 0xA68E UpdateObjectList
154 0xA695 UpdateObjectListEntry
155 0xA6F8 UpdateObjectCollisions
156 0xA79F CheckObjectScroll
157 0xA82F ClearScrollLatchAlt
158 0xA834 UpdateObjectSprite
159 0xA884 SetObjectFlags
160 0xA8D1 AdvanceObjectFrame
161 0xA8E9 TestObjectActive
162 0xA949 UpdateObjectAnimations
163 0xA952 UpdateObjectAnimation
164 0xA992 UpdateObjectTimer
165 0xA99E DecrementObjectCounter
166 0xA9AB UpdateObjectState
167 0xA9D8 ToggleScrollRegionFlip
168 0xA9FF BuildObjectList
169 0xAA56 ReadControllers
170 0xAA63 ReadControllerShiftRegister
171 0xAAB8 StoreControllerButtonBits
172 0xAACD EnableRendering
173 0xAADC DisableRenderingAndClearNametables
174 0xAAEF ClearNametablePattern
175 0xAB68 CopyPaletteFromTable
176 0xAB98 LoadShadowOamBlock
177 0xABA3 FillShadowOamBlock
178 0xABB1 UploadPalette
179 0xABE4 ApplyPpuScrollAndControl
180 0xABF7 ShiftAccumulatorRight4
181 0xABFC ClearOamShadow
182 0xAC0D SelectLevelVramWriter
183 0xAC3B SetLevelVramStream
184 0xAC43 FillAttributeBlock
185 0xAC4C WriteAttributeBlock
186 0xAC62 LoadAttributeStream
187 0xAC78 SetPpuAddressHighAnd40
188 0xAC82 WriteCompressedVramStream
189 0xAC88 AdvanceSourceByte
190 0xAC96 DecodeVramStreamToken
191 0xACA7 WriteVramRunToken
192 0xACC9 AdvanceDestinationWord
193 0xACD7 AdvanceCountWord
194 0xACE5 WithRenderingEnabled
195 0xACF5 WriteCompressedVramBlocks
196 0xAD19 ComputeCollisionBits
197 0xAD36 ComputePlayerOverlapBits
198 0xAE45 SetDefaultOverlapBits
199 0xAE9B ComputeEdgeOverlapBits
200 0xAF25 InitializeSoundEngine
201 0xAF3B UpdateSoundFrame
202 0xAF40 UpdateAllSoundChannels
203 0xAF43 UpdateSoundChannel
204 0xAF55 AdvanceSoundChannelNote
205 0xAF69 WriteSoundChannelState
206 0xAF6B RebuildApuEnableMask
207 0xAF73 StartSoundChannelNote
208 0xAFAB AdvanceSoundSequencePointer
209 0xAFC5 ComputeEnvelopeMask
210 0xAFD9 ComputeTonePeriod
211 0xB000 ShiftNoteTableIndex
212 0xB007 WriteToneRegisters
213 0xB029 WriteFixedToneRegisters
214 0xB03A ReadNoteDuration
215 0xB049 StoreNoteDuration
216 0xB059 StoreShortNoteDuration
217 0xB05D BuildApuChannelMask
218 0xB062 WriteApuEnable
219 0xB06C ApplySoundCommand
220 0xB083 WriteApuControlRegister
221 0xB08C AdvanceSoundSequenceStep
222 0xB08E AdvanceSoundSequenceStepAlt
223 0xB095 ReturnFromSoundCommand
224 0xB096 ReadLoopFlag
225 0xB09D HandleNoteTerminator
226 0xB0A9 HandleSustainCounter
227 0xB0B3 LoadSoundSequenceStep
228 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.
+112
View File
@@ -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
1 # MUSCLE (U) reused zero-page bytes - Pass 3
2 # Zero page $14/$15 is the 16-bit block counter for the compressed-VRAM transfer path and
3 # the collision-bit accumulator for the overlap test. locals.inc names both roles; this
4 # file applies the counter name only inside AdvanceCountWord and the two block-count
5 # set-ups, so the same byte is not mislabelled at every site.
6 # kind<TAB>start<TAB>end<TAB>old<TAB>new
7 zprange 0xACD7 0xACE2 Zp15 StreamBlockCountHi