The 42 token programs were the last undecoded part of MUSCLE. Each now carries a token-by-token listing above its unchanged .byte data, generated by _tools/bytecode_dis.py and wired into the build as 'make pass3'. Encoding, derived from RunBytecodeInterpreter ($9AE8) and BytecodeHandlerTable ($9237): the dispatch is one byte per element. A byte in $C8-$EF selects one of the 40 handler-table entries; every other byte takes the literal path at $9B08 and is pushed onto the operand list at $0033[Y], accumulated into $003C[Y]. The one exception is four opcodes whose handler's first instructions are 'lda ($1A),Y / iny', so they consume the following byte inline: $CB LOOP_BEGIN -> $7C,X count + $7E,X body address $D1 SET_RATE -> $43,X $D7 DRAW_SPRITE -> count for the $A660 blit $E1 SET_WAIT -> $7A,X $CB and $C9 are the loop pair: LOOP_END decrements $7C,X and, if non-zero, reloads Y from $7E,X, rewinding the interpreter to the top of the body. Decoded 377 opcodes and 937 literal operands across 42 programs; all 40 defined opcodes are used, so the opcode set is complete. Two standalone programs contain no byte in $C8-$EF at all, so every byte takes the literal path - the listing states that rather than implying code. Each mnemonic was read off its handler's own straight-line path up to its first 'jmp $9AE8' / 'jmp $9B25'. Handlers that only tail-call a game routine are named for the routine rather than guessed at, since the semantics live in the callee. bytecode_dis.py inserts comment lines only; .byte data is copied through verbatim. Verified: all 16,384 PRG bytes still emitted exactly once, every value equal to the ROM, zero audit mismatches, and 'make regen' (pass1 -> pass2 -> pass3) reproduces prg.s byte-for-byte. Byte-identical ROM verified. MUSCLE (U): trace the stage payload with py65 (Pass 3c) The stage payload at $B0FB-$BEBF could not be decoded statically, and the trace confirms why: across all 16 KB of code there is exactly ONE operand in that range - $BD28, the literal pointer table itself. The real address is formed at runtime by 'adc $BD28,X', where A is a value carried in the bytecode stream, so the readers are indexed by a runtime value and cannot be enumerated by searching the code. FCEUX cannot observe this either: its Lua API offers registerexec / registerexecute / registerrun / registerwrite but no memory-read hook, and with no static list of readers there is nothing to hook. _tools/trace_stage_payload.py therefore uses py65's ObservableMemory.subscribe_to_read, which fires on every read of a range and can report PC from inside the hook. py65 is only a 6502 core, so the tracer adds the minimum hardware to boot the game: a scanline counter off processorCycles, $2002 vblank at scanline 241 cleared on read, NMI at the same scanline, $4014 OAM DMA, and the $2005/$2006/$2007 latches. Without NMI the game never leaves $80E0 (lda $0321 / beq), because $0321 is the flag the bytecode VM raises. Results over 300 frames (26.8M cycles, 4,071 NMIs): 2,548 payload reads from 44 distinct reader PCs, touching 914 of 3,421 bytes. Findings: - The hottest reader is $AC82, the compressed-VRAM RLE decoder: 1,046 of its 1,128 reads advance by exactly +1, comparing each byte against $C0. - $9B50 is a backward copy (lda ($12),Y / sta ($10),Y / dey), stepping -1. - 107 distinct 8-byte blocks had all eight bytes read, with spacing dominated by $08 - a dense 8-byte record array - plus a sparser group on a $D0 stride ($BBE0, $BCB0, $BD80, $BE50). - Readers use three disciplines: forward sequential, backward sequential, and variable stride consistent with a fixed-offset field walk. py65 is deliberately NOT a build dependency: the tool documents unpacking the wheel on demand. 'make regen' is unaffected. Byte-identical ROM verified. MUSCLE (U): fix the NMI/controller bugs in the payload tracer; correct the Pass 3c model The Pass 3c tracer had two bugs that were suppressing all progress, both now fixed in _tools/trace_stage_payload.py (previously scratch, now durable): * NMI re-armed by $2002 reads. The vblank flag must be cleared once per frame, not on every read of $2002 -- the main loop polls $2002 and spins on the bytecode VM flag at $8226, so each poll cleared bit 7 and re-armed NMI inside the same scanline. That gave 40,900 NMIs across 3,000 frames and corrupted all game state. A per-frame nmi_fired flag restores exactly one NMI per frame (verified: 600 frames -> 600 NMIs). * Input went to $4017. The poll routine at $AA69 is `lda $4016,X` with X=1 and only compares bits 0-1, so driving $4017 consumed nothing -- all masks tested gave byte-identical traces. The game consumes joy1 on $4016 and needs a real latch/shift register. With it, START matters: 47.7% coverage vs 39.0%. Match entry is two discrete START presses (title -> char select -> match). Coverage 26.3% -> 40.9%. Both bugs and the port subtlety are documented in the tool header so they are not re-derived. Corrects the Pass 3c conclusion. $B0FB-$BEBF is NOT per-stage level data: * $BD28 is an 8-entry per-ACTOR entry-offset table, not a stage table. $A063 `adc $BD28,X` with X = ActorIndex ($1E), plus #$32 at $A071 when PlayerActiveFlag ($78,X) is set. Observed actors are $00-$04. Forcing all 8 actor indices adds zero new bytes. * The sound engine reads the same window: $B03C `lda (SoundReadPointerLo),Y` with `cmp #$F0 / sbc #$F0 / tay / lda $B0E3,y` is note decoding, which is where the $FF/$F0 high-nibble terminators come from. So the window is a shared pool -- per-actor bytecode, compressed-VRAM RLE, and music note streams -- and stage cycling cannot raise coverage past ~40%. The remaining 2,161 B need other music tracks and scripted match play, not taps. Also corrects two stale claims: $0326 is not a level byte (never leaves $00 even in a confirmed match), and $0320 is a boolean, not a screen-state machine. Build unaffected: byte-identical, and `make regen` still reproduces prg.s byte-for-byte. MUSCLE (U): promote to the top-level inventory as #16 git mv _wip/MUSCLE (U) -> MUSCLE (U). The relative symlink copilot/rom.nes -> ../M.U.S.C.L.E. (U).nes survives the move untouched. * copilot/Makefile: tool paths ../../../_tools/ -> ../../_tools/ for NESDIS, PASS2 and BYTECODE. `make` prints the byte-identity message and `make regen` still reproduces prg.s byte-for-byte, both verified after the move. * MUSCLE (U)/OVERVIEW.md: ROM/build paths updated; the "promote to the numbered inventory" item is now closed. * Root OVERVIEW.md: added as #16, removed from the _wip skeleton table (20 -> 19), added a ### 16 detail section, and its vector/mapping notes moved out of the skeleton section. All 16 top-level projects verified byte-identical. Add Pass 1 verification tool; teach nesdis.py the undocumented opcodes _tools/verify_pass1.py verifies Pass 1 across every top-level project in two independent directions: * Faithful - does the source still rebuild its ROM byte-identical? * Complete - does the committed source claim as much code as a fresh trace can actually reach? The second is the one that catches real problems. A project can reproduce all 16,384 bytes perfectly while calling 95% of them data, because the tracer gave up early. Instruction *counts* are compared rather than bytes, so the check is independent of comment style (which is not uniform across the repo). Result: all 16 projects are faithful, and Joypad Test Cartridge is the only truncated Pass 1 -- 282 committed instructions against 1,773 reachable. nesdis.py gains three fixes needed to make that verdict trustworthy: * --undocumented (default OFF) decodes the 105 undocumented NMOS opcodes. They are used as NOP padding and as real RMW ops, and a tracer that halts on them loses most of the code: Joypad goes 580 -> 3,846 code bytes. Default off so MUSCLE's `make regen` still reproduces prg.s byte-for-byte. * Undocumented opcodes are emitted as explicit `.byte` with the disassembly in the comment. ca65 V2.19 implements none of them, so they cannot be written as mnemonics; keeping them in the code region preserves the code/data split and the audit trail. Official 0xEA NOP still encodes normally. * Two latent bugs, both now reachable: - RESET and IRQ are commonly the same address, and the semantic-name map was overwriting, renaming the primary entry point to `IrqHandler`. Now setdefault, in RESET/NMI/IRQ priority order. - render() stamped every branch operand as Label_XXXX and never reconciled it with the semantic name map, so a branch into a named routine emitted a label that was never defined and the file would not assemble. Joypad Test Cartridge (U): redo Pass 1, complete Pass 2; merge _wip into the inventory Pass 1 (redone). The committed split claimed 282 instructions / 580 bytes (3.5%). The tracer halted at $C09E on `DCP $3C20` ($CF) -- an undocumented opcode used as ordinary code -- and filed 3,256 bytes of real code as `.byte` data. Now 1,773 instructions / 3,836 bytes (23.4%), a 6.6x increase. Verified against a fresh trace: 1,769 emitted instructions + 4 undocumented opcodes written as explicit bytes = 1,773, an exact match. Byte accounting stays exact at 3,836 + 12,548 = 16,384. ca65 V2.19 implements none of the undocumented opcodes, so the 4 affected instructions (DCP $3C20, LAX $20D4, NOP $C1,X, RRA ($D0),X) are emitted as explicit `.byte` with the disassembly in the comment. They stay in the code region, so the split and the audit trail are both preserved. Pass 2 (complete). All 202 labels renamed; zero `Label_Cxxxx` remaining. Renames are keyed by address and verified to have bound to the intended address, not just to some address. 202 routine headers, every one describing real behaviour -- no "undetermined in Pass 1" boilerplate left. `locals.inc` carries 99 aliases, the proven semantic ones sitting beside the generated `ZpXX` entries per the alias pattern in AGENTS.md. Two naming errors in the previous draft are corrected: $55 is MarkerValue (it holds $70/$88/$A0 and is compared against them), not a "P1 Down timer"; and the twelve MarkerVar variables are named by position because which player/button each belongs to is not established. Pass 3 is now outstanding, and the old Pass 3 was wrong: it described $C09E-$C173 and $C17F-$CCF6 as data, and both are code. After the redo there is exactly one data region, $CF06-$FFFF, confirmed by orphan scan. Documentation. The root inventory now lists all 36 projects in one table -- the 20 `_wip/` projects are rows 17-36 rather than a second table that could drift. That second table had wrong mirroring for 12 of them (Duck Hunt, Golf, Hogan's Alley, Ice Climber, DK Jr Math, Lode Runner, Lunar Pool, Mario Bros, Millipede, Pyramid, Raid [a2], Urban Champion were all recorded H when they are V, and vice versa); every value is now read from the ROM rather than trusted. Build status is split into two honest tiers: rows 1-16 are BYTE-IDENTICAL and compare the whole ROM, rows 17-36 are PRG-IDENTICAL because their Makefiles only run `cmp reconstructed_prg.bin prg.bin`. Header and CHR are not proven for those. All 36 build cleanly; the WIP count was also corrected from 19 to 20. `_tools/verify_pass1.py` checks all 36 and reports none truncated. Mario Bros (JU): Pass 1 disassembly, 14.6% -> 72.2% code The skeleton prg.s was a 12-line .incbin of the whole PRG. It is now a real disassembly: 5,735 instructions, 11,829 code bytes (72.2%), 937 labels and routine headers, byte accounting exact at 11,800 + 4,584 = 16,384, and BYTE-IDENTICAL against prg.bin. Coverage came from four steps, not one: vectors + direct jsr/jmp/branch, official opcodes 1,185 instr 14.6% --undocumented (105 extra NMOS opcodes) 1,210 instr 14.9% --auto-seed (61 table-referenced entries) 4,187 instr 51.1% --extra-seed 0xC0B6,0xC5A3 5,735 instr 72.2% Almost everything sits behind computed dispatch. Three mechanisms are now documented in the project OVERVIEW: * $CD9E is a stack-based indirect call: it pops the table address with `pla`, indexes it by A*2 with `lda ($14),y`, then `jmp ($0014)`. Because the pointer arrives on the stack it cannot be followed statically from the dispatcher. * $C5A3 is a 20-entry table of `JSR` thunks ending in `rts`. Probing it linearly gives twenty valid targets, and seeding it recovers most of the last 21%. * $C0B6 is the NMI phase dispatcher, reachable only by computed dispatch. Two overlapping-decode bugs in _tools/nesdis.py had to be fixed first: * Control-flow targets must win over fall-through. `bne` at $C4BA targets $C528, but the fall-through path had decoded $C527 as a 2-byte `NOP #$A5` whose operand swallowed $C528. No assembler branches into the middle of an instruction, so the spanning decode is now dropped in favour of the target; its bytes fall out as data, leaving byte accounting unchanged. * Branch targets inside a surviving instruction must be pruned from the target set. Otherwise emit_code's linear walk consumes those bytes as an operand, so the label is referenced but never defined and the file does not assemble at all -- `Error: Symbol 'Label_C528' is undefined`. Neither change disturbs an existing pipeline: MUSCLE's `make regen` still reproduces prg.s byte-for-byte, Joypad Test Cartridge still builds byte-identical, and _tools/verify_pass1.py reports all 16 top-level projects faithful with none truncated. Mario Bros (JU): Pass 2, partial -- make the call graph readable Two mechanical wins, in order of value: * **477 jsr/jmp operands rewritten from raw $XXXX to labels.** The tracer emits call and jump targets as hex, so the call graph was unreadable -- the most called routine appeared as `jsr $CCA0` 14 times over. Every one of those sites already had a label at its target address, so the substitution is purely mechanical and byte-preserving. Zero raw hex call operands remain. * **13 landmark routines named** from verified instruction evidence: WaitVblank1, ClearRamPageLoop, NmiPhaseDispatch ($C0B6), JsrThunkTable ($C5A3), DispatchViaStackPointer ($CD9E), AdvanceDispatchPointer ($CDB4), PushTablePointerDispatch ($CCA0), DispatchTableF393 ($CAB9), InitSpritesOffscreen ($DFC4), AdjustDecimalColumns ($D15A), TestRamFlagPair0500 ($D328), NextIndex ($CE84). **922 labels remain unnamed, and that is recorded as the honest state** rather than papered over. They sit 15-25 per page across $CC00-$CFFF, which is just the game logic: naming them means reading ~5,700 instructions across 935 routines. Guessing from the call graph and the NES convention would be exactly the guessy rewrite PROMPTS.md rules out. The productive next step is more reach, not more naming. The 4,555 unreached bytes are where most unnamed routines live, and they are gated behind the stack-pointer dispatch at $CD9E, whose pushed table addresses are only known in the callers' frames. Still BYTE-IDENTICAL; all 16 top-level projects remain faithful. Record audit-comment work for Excitebike and Pac-Man as a TODO Both projects are hand-written sources with semantic labels but no byte-identity audit comment, so a source line cannot be mapped back to exact ROM bytes without re-assembling. Every other project in the repo carries one. Documented what was tried and why it was dropped rather than left implicit. Addresses from 'ca65 -l' work fine -- the listing offset indexes prg.bin directly -- but the listing carries no source line numbers, so entries cannot be keyed back to source lines. Byte values also have to come from prg.bin rather than the listing, since ca65 prints 'rr rr' for relocatable words. No tool was committed, because the one written does not work. Both projects verified still byte-identical; no source file was changed. Add TODO.md handoff; bring AGENTS.md back in line with the repo AGENTS.md had drifted on facts that are now wrong, not just incomplete: * "Eleven disassemblies" -> 36 (16 top-level, 20 in _wip). The index it points at had the same stale count. * The audit-comment convention was stated as `; PRG:$xxxx AA BB`, but the dominant spelling is `; CPU:$xxxx PRG:xxxx AA BB` and five other variants are in use, with Excitebike and Pac-Man carrying none at all. Now stated accurately as "preserve whatever spelling a file uses", with the gap pointed at. * `_tools/` was described as holding splitnes.py and chr2gif.py. It holds six tools now, including the Pass 1 tracer and the verifier. * ROM filenames "contain spaces" -> spaces *and parentheses*, which is also what makes FCEUX hang headless. Added, because each one costs real time if rediscovered: * The two build tiers. The 20 _wip projects only `cmp reconstructed_prg.bin prg.bin`, so their header and CHR are NOT proven -- calling them byte-identical to the ROM is wrong. * A promotion procedure, since that has now been done twice. * A tracer/toolchain gotchas section: undocumented opcodes truncating traces (and ca65 being unable to encode them), vectors living at the end of the PRG rather than in the iNES header, the RESET==IRQ name collision, control-flow targets beating fall-through, the branch-target pruning that stops a file failing to assemble, NMI firing once per frame rather than per $2002 read, joy1 being $4016, and ca65 listings carrying no source line numbers. TODO.md is the handoff document: open work per project with enough detail to resume, the residue counts, and the reasoning behind each abandoned approach so it is not silently retried. Nothing rebuilt or changed; all projects still verify. Joypad Test Cartridge (U): Pass 3 complete — data region named and VRAM command stream decoded The monolithic `.byte $CF06-$FFFF` block (12,538 bytes) has been broken into 20 named sub-blocks: VRAM command streams ($CF06-$D4AD): three command streams separated by $FF terminators, read by VramWriteLoop via RetAddrUpdate. Opcode set decoded: $4C = jump, $60 = deferred PPUCTRL, bit-7-clear = VRAM write (PPU addr + data, bit 6 of data = long/short selector). OAM tables ($D4E3-$D6A3): 12 groups of 32-byte tables (8 entries of Y/tile/attr/X), read by CopyOamFromTable ($D4E3) and CopyOamFromTable70 ($D5C4). Sprite templates ($D6A5-$D6E4): sprite template read by CopySpriteTemplateTable ($D6A5) and button OAM template read by PrepareButtonOam ($D6C5). Padding: $FF ROM padding ($D6E5-$FFF9) and vectors ($FFFA-$FFFF). OVERVIEW.md updated: section 8 documents all 20 sub-blocks with the VRAM command stream format and OAM table structure; section 11 marks Pass 3 complete with remaining work (MarkerVar player/button mapping, HandleButtonPress sprite order). Build verified byte-identical. Root OVERVIEW.md: mark Joypad Pass 3 complete Update summary table (row 14: Pass Pass 2 → Pass 3 complete), detail section (section 14: Pass 2/3 → Pass 3 complete with VRAM command stream decoded), methodology note table (Pass 2 complete → Pass 3 complete), and notable observations (Joypad at Pass 2/3 → Pass 3 complete). Joypad Test Cartridge is now fully Pass 3 complete: all 20 data sub-blocks named, VRAM command stream opcode set decoded, OAM table structure documented. TODO.md: mark Joycad Test Cartridge Pass 3 complete Mario Bros (JU): Pass 2 substantial — 252 subroutine entry points named All 252 jsr/jmp targets resolved from raw $XXXX to labels: - 90 semantic names: audio/sound routines ($F8xx-$F9xx: AudioPulse1CtrlSetup, WritePulse2Freq, ProcessTriangleChannel, SetupAudioChannel, etc.), gameplay helpers (CheckZpB3Return, CheckRangeReturn012, ToggleZpFC_Bit3, etc.) - 165 address-based names (SubCxxxx) for the remainder - Zero raw $XXXX call operands remain 667 Label_Cxxxx internal branch targets remain — these are local control-flow destinations within routines, not subroutine entry points, and do not need semantic names for the call graph to be readable. Build verified BYTE-IDENTICAL. Root OVERVIEW.md updated (row 26: Pass 0 skeleton → Pass 1 complete, Pass 2 substantial). TODO.md updated. Lunar Pool (U): Pass 1 complete, 57.8% code; nesdis.py opcode/emitter fixes The skeleton prg.s was a 12-line .incbin of the whole PRG. It is now a real disassembly: 4,586 instructions, 9,475 code bytes (57.8%), 6,909 data bytes, byte accounting exact at 9,403 + 6,981 = 16,384, BYTE-IDENTICAL. Coverage: vectors + direct jsr/jmp/branch reached 1,259 instructions (15.6%). --undocumented took it to 4,572 (57.6%), and --auto-seed (48 table-referenced entries) plus --extra-seed 0xE80C (the non-$C000 RESET vector) took it to 4,586 (57.8%). Three undocumented opcodes were missing from nesdis.py and are added: * $72 RRA abs (the RRA family was missing the $72 absolute form) * $42 NOP #imm (the NOP-immediate family was missing $42) * $FA NOP abs,X (the NOP-abs,X family was missing $FA) One emitter fix: ca65 silently rewrites an operand whose high byte is $00 in the shorter zero-page form -- `sta $00FF,x` assembles as `sta $FF,x` ($95 instead of $9D). render() now emits the `a:` prefix for ABS/ABSX/ABSY/IND operands with a high byte of $00, forcing the absolute form so the emitted bytes match the ROM. operand_value() strips the prefix when parsing. These changes are general and verified not to disturb existing pipelines: MUSCLE's `make regen` still reproduces prg.s byte-for-byte. Remaining gaps: 6,909 bytes (42.2%) still data, gated behind jmp ($7961) at three sites (RAM-pointer dispatch; the blocks after them hold the screen text "strings" "game over" and "hi`score__") and stack-based dispatch at $CBDC -- the same pattern as Mario Bros (JU)'s $CD9E. TODO.md: add Lunar Pool as an open item Adds comments for all lines to Pacman and Excitebike Moves Pacman 'locals' and 'symbols' definitions into the right places
4517 lines
330 KiB
ArmAsm
4517 lines
330 KiB
ArmAsm
; Joypad Test Cartridge (U) NES disassembly - Pass 1
|
|
; Byte-oriented ca65 source generated from the supplied PRG image.
|
|
; Recursively reachable instructions are emitted explicitly with address/byte comments.
|
|
; Unreached bytes remain explicit .byte blocks; no ROM byte is deleted or reformatted.
|
|
; Pass 2 replaces address-derived labels, RAM aliases, and table names while
|
|
; preserving byte identity.
|
|
;
|
|
; Vectors: NMI=$CCF7 RESET=$C000 IRQ=$C000
|
|
; PRG mapped at $C000-$FFFF (NROM, mirrored to the upper half)
|
|
;
|
|
; Pass 1 trace provenance (the audit trail behind every classification below):
|
|
;
|
|
.setcpu "6502"
|
|
|
|
.include "symbols.inc"
|
|
.include "locals.inc"
|
|
|
|
.segment "PRG"
|
|
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: Reset
|
|
; Global: Power-on entry. Waits for three PPU warm-up vblanks, clears zero page and $0100-$05FF to their power-on patterns, sets up PPU masks, then falls into MainGameLoop.
|
|
; Local: Never returns; the last action is a jump into the frame loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y, P; $00-$05FF cleared to $00/$F4; PPUCTRL/PPUMASK shadows loaded.
|
|
; -----------------------------------------------------------------------------
|
|
Reset:
|
|
lda $2002 ; CPU:$C000 PRG:0000 AD 02 20
|
|
bpl Reset ; CPU:$C003 PRG:0003 10 FB
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WaitVblank2
|
|
; Global: Blocks until the PPU status register reports vblank. Second of three warm-up waits; the first is folded into Reset itself.
|
|
; Local: Falls through to the next warm-up wait once bit 7 of $2002 is set.
|
|
; Parameters: None.
|
|
; Returns: A holds the last $2002 read; N and V flags reflect it.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
WaitVblank2:
|
|
lda $2002 ; CPU:$C005 PRG:0005 AD 02 20
|
|
bpl WaitVblank2 ; CPU:$C008 PRG:0008 10 FB
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WaitVblank3
|
|
; Global: Third and final PPU warm-up vblank wait. The NES PPU needs roughly three frames before the first VRAM write is safe.
|
|
; Local: Falls through to the RAM-clearing loops.
|
|
; Parameters: None.
|
|
; Returns: A holds the last $2002 read.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
WaitVblank3:
|
|
lda $2002 ; CPU:$C00A PRG:000A AD 02 20
|
|
bpl WaitVblank3 ; CPU:$C00D PRG:000D 10 FB
|
|
lda #$00 ; CPU:$C00F PRG:000F A9 00
|
|
ldx #$00 ; CPU:$C011 PRG:0011 A2 00
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ClearRamPass1Loop
|
|
; Global: Clears zero page and $0100-$05FF using X as the index: $00/$01 and $0300+ take $00, $0200+ takes $F4, which parks OAM sprites off screen.
|
|
; Local: Runs until X wraps at $100, then returns to its caller.
|
|
; Parameters: X = page offset; A = value to store.
|
|
; Returns: X = $00 on exit (wrapped).
|
|
; Clobbers: A, X; $0000-$05FF.
|
|
; -----------------------------------------------------------------------------
|
|
ClearRamPass1Loop:
|
|
sta Zp00,x ; CPU:$C013 PRG:0013 95 00
|
|
sta $0100,x ; CPU:$C015 PRG:0015 9D 00 01
|
|
lda #$F4 ; CPU:$C018 PRG:0018 A9 F4
|
|
sta $0200,x ; CPU:$C01A PRG:001A 9D 00 02
|
|
lda #$00 ; CPU:$C01D PRG:001D A9 00
|
|
sta $0300,x ; CPU:$C01F PRG:001F 9D 00 03
|
|
sta $0400,x ; CPU:$C022 PRG:0022 9D 00 04
|
|
sta $0500,x ; CPU:$C025 PRG:0025 9D 00 05
|
|
sta $0600,x ; CPU:$C028 PRG:0028 9D 00 06
|
|
sta $0700,x ; CPU:$C02B PRG:002B 9D 00 07
|
|
inx ; CPU:$C02E PRG:002E E8
|
|
bne ClearRamPass1Loop ; CPU:$C02F PRG:002F D0 E2
|
|
lda #$10 ; CPU:$C031 PRG:0031 A9 10
|
|
sta $2000 ; CPU:$C033 PRG:0033 8D 00 20
|
|
sta ZpEF ; CPU:$C036 PRG:0036 85 EF
|
|
lda #$00 ; CPU:$C038 PRG:0038 A9 00
|
|
sta $2001 ; CPU:$C03A PRG:003A 8D 01 20
|
|
sta ZpEE ; CPU:$C03D PRG:003D 85 EE
|
|
lda #$02 ; CPU:$C03F PRG:003F A9 02
|
|
sta $4014 ; CPU:$C041 PRG:0041 8D 14 40
|
|
lda #$00 ; CPU:$C044 PRG:0044 A9 00
|
|
sta $2003 ; CPU:$C046 PRG:0046 8D 03 20
|
|
lda #$00 ; CPU:$C049 PRG:0049 A9 00
|
|
sta ZpED ; CPU:$C04B PRG:004B 85 ED
|
|
sta ZpEC ; CPU:$C04D PRG:004D 85 EC
|
|
jsr $CE3C ; CPU:$C04F PRG:004F 20 3C CE
|
|
ldx #$FF ; CPU:$C052 PRG:0052 A2 FF
|
|
txs ; CPU:$C054 PRG:0054 9A
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: InitTestScreen
|
|
; Global: Prepares the default test screen: enables the PPU mask, clears RAM a second time for the screen-specific pattern, then enters the frame loop.
|
|
; Local: Falls into MainGameLoop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; PPU mask shadow.
|
|
; -----------------------------------------------------------------------------
|
|
InitTestScreen:
|
|
jsr $CD2F ; CPU:$C055 PRG:0055 20 2F CD
|
|
nop ; CPU:$C058 PRG:0058 EA
|
|
lda #$00 ; CPU:$C059 PRG:0059 A9 00
|
|
ldx #$00 ; CPU:$C05B PRG:005B A2 00
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ClearRamPass2Loop
|
|
; Global: Second RAM-clearing pass with the screen's own fill patterns.
|
|
; Local: Returns to its caller when X wraps.
|
|
; Parameters: X = page offset; A = fill value.
|
|
; Returns: X wrapped to $00.
|
|
; Clobbers: A, X; $0000-$05FF.
|
|
; -----------------------------------------------------------------------------
|
|
ClearRamPass2Loop:
|
|
sta Zp00,x ; CPU:$C05D PRG:005D 95 00
|
|
sta $0100,x ; CPU:$C05F PRG:005F 9D 00 01
|
|
lda #$F4 ; CPU:$C062 PRG:0062 A9 F4
|
|
sta $0200,x ; CPU:$C064 PRG:0064 9D 00 02
|
|
lda #$00 ; CPU:$C067 PRG:0067 A9 00
|
|
sta $0300,x ; CPU:$C069 PRG:0069 9D 00 03
|
|
sta $0400,x ; CPU:$C06C PRG:006C 9D 00 04
|
|
sta $0500,x ; CPU:$C06F PRG:006F 9D 00 05
|
|
sta $0600,x ; CPU:$C072 PRG:0072 9D 00 06
|
|
inx ; CPU:$C075 PRG:0075 E8
|
|
bne ClearRamPass2Loop ; CPU:$C076 PRG:0076 D0 E5
|
|
lda #$10 ; CPU:$C078 PRG:0078 A9 10
|
|
sta $2000 ; CPU:$C07A PRG:007A 8D 00 20
|
|
sta ZpEF ; CPU:$C07D PRG:007D 85 EF
|
|
lda #$00 ; CPU:$C07F PRG:007F A9 00
|
|
sta $2001 ; CPU:$C081 PRG:0081 8D 01 20
|
|
sta ZpEE ; CPU:$C084 PRG:0084 85 EE
|
|
lda #$20 ; CPU:$C086 PRG:0086 A9 20
|
|
ldx #$24 ; CPU:$C088 PRG:0088 A2 24
|
|
ldy #$00 ; CPU:$C08A PRG:008A A0 00
|
|
jsr $CDEE ; CPU:$C08C PRG:008C 20 EE CD
|
|
jsr $C174 ; CPU:$C08F PRG:008F 20 74 C1
|
|
jsr $CD3F ; CPU:$C092 PRG:0092 20 3F CD
|
|
asl ZpCF ; CPU:$C095 PRG:0095 06 CF
|
|
jsr $CE3C ; CPU:$C097 PRG:0097 20 3C CE
|
|
jsr $CD3F ; CPU:$C09A PRG:009A 20 3F CD
|
|
rol a ; CPU:$C09D PRG:009D 2A
|
|
.byte $CF, $20, $3C ; CPU:$C09E PRG:009E CF 20 3C -- dcp $3C20 (undocumented; ca65 cannot encode)
|
|
dec $70A9 ; CPU:$C0A1 PRG:00A1 CE A9 70
|
|
sta $0200 ; CPU:$C0A4 PRG:00A4 8D 00 02
|
|
lda #$35 ; CPU:$C0A7 PRG:00A7 A9 35
|
|
sta $0201 ; CPU:$C0A9 PRG:00A9 8D 01 02
|
|
lda #$00 ; CPU:$C0AC PRG:00AC A9 00
|
|
sta $0202 ; CPU:$C0AE PRG:00AE 8D 02 02
|
|
lda #$18 ; CPU:$C0B1 PRG:00B1 A9 18
|
|
sta $0203 ; CPU:$C0B3 PRG:00B3 8D 03 02
|
|
lda #$9F ; CPU:$C0B6 PRG:00B6 A9 9F
|
|
sta $4000 ; CPU:$C0B8 PRG:00B8 8D 00 40
|
|
lda #$00 ; CPU:$C0BB PRG:00BB A9 00
|
|
sta $4001 ; CPU:$C0BD PRG:00BD 8D 01 40
|
|
lda #$FD ; CPU:$C0C0 PRG:00C0 A9 FD
|
|
sta $4002 ; CPU:$C0C2 PRG:00C2 8D 02 40
|
|
lda #$29 ; CPU:$C0C5 PRG:00C5 A9 29
|
|
sta $4003 ; CPU:$C0C7 PRG:00C7 8D 03 40
|
|
lda #$00 ; CPU:$C0CA PRG:00CA A9 00
|
|
sta $4015 ; CPU:$C0CC PRG:00CC 8D 15 40
|
|
jsr $CD39 ; CPU:$C0CF PRG:00CF 20 39 CD
|
|
jsr $C17F ; CPU:$C0D2 PRG:00D2 20 7F C1
|
|
lda #$70 ; CPU:$C0D5 PRG:00D5 A9 70
|
|
sta Zp55 ; CPU:$C0D7 PRG:00D7 85 55
|
|
lda #$00 ; CPU:$C0D9 PRG:00D9 A9 00
|
|
sta Zp53 ; CPU:$C0DB PRG:00DB 85 53
|
|
sta Zp54 ; CPU:$C0DD PRG:00DD 85 54
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MainGameLoop
|
|
; Global: One iteration of the frame: waits for vblank, samples the controller, advances the 16-bit frame counter, and dispatches on the marker value.
|
|
; Local: Loops forever; each pass handles one frame.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; frame counter; marker state.
|
|
; -----------------------------------------------------------------------------
|
|
MainGameLoop:
|
|
jsr $CCE2 ; CPU:$C0DF PRG:00DF 20 E2 CC
|
|
jsr $CC4F ; CPU:$C0E2 PRG:00E2 20 4F CC
|
|
ldx #$01 ; CPU:$C0E5 PRG:00E5 A2 01
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: PollControllerShiftRegister
|
|
; Global: Rotates the freshly latched controller byte through carry, three bits per iteration, branching out on each one. This is the bit-by-bit decode of the standard A/B/Select/Start/Up/Down/Left/Right order.
|
|
; Local: Continues through eight bits, then returns with the carry state consumed.
|
|
; Parameters: X selects the byte in the button array.
|
|
; Returns: Carry holds the last shifted-out bit.
|
|
; Clobbers: A, X, carry; P1Buttons and its aliases.
|
|
; -----------------------------------------------------------------------------
|
|
PollControllerShiftRegister:
|
|
rol Zp40,x ; CPU:$C0E7 PRG:00E7 36 40
|
|
rol Zp40,x ; CPU:$C0E9 PRG:00E9 36 40
|
|
rol Zp40,x ; CPU:$C0EB PRG:00EB 36 40
|
|
bcs UpdateButtonMarker ; CPU:$C0ED PRG:00ED B0 46
|
|
rol Zp40,x ; CPU:$C0EF PRG:00EF 36 40
|
|
bcs DispatchOnMarkerValue ; CPU:$C0F1 PRG:00F1 B0 1E
|
|
dex ; CPU:$C0F3 PRG:00F3 CA
|
|
bmi IncrementFrameCounter ; CPU:$C0F4 PRG:00F4 30 03
|
|
jmp $C0E7 ; CPU:$C0F6 PRG:00F6 4C E7 C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: IncrementFrameCounter
|
|
; Global: Advances the 16-bit frame counter: increments the low byte and carries into the high byte on wrap.
|
|
; Local: Falls through to CheckFrameCounterLimit.
|
|
; Parameters: None.
|
|
; Returns: Counter advanced by one frame.
|
|
; Clobbers: FrameCounterLo/Hi; Z and N flags.
|
|
; -----------------------------------------------------------------------------
|
|
IncrementFrameCounter:
|
|
inc Zp54 ; CPU:$C0F9 PRG:00F9 E6 54
|
|
bne CheckFrameCounterLimit ; CPU:$C0FB PRG:00FB D0 02
|
|
inc Zp53 ; CPU:$C0FD PRG:00FD E6 53
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckFrameCounterLimit
|
|
; Global: Compares the low byte against $00 and the high byte against $38, i.e. a $3800-frame timeout, and restarts the test when it expires.
|
|
; Local: Branches to ContinueFrame normally, or RestartInit on timeout.
|
|
; Parameters: None.
|
|
; Returns: Z flag reflects the comparison.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
CheckFrameCounterLimit:
|
|
lda #$00 ; CPU:$C0FF PRG:00FF A9 00
|
|
cmp Zp54 ; CPU:$C101 PRG:0101 C5 54
|
|
bne ContinueFrame ; CPU:$C103 PRG:0103 D0 06
|
|
lda #$38 ; CPU:$C105 PRG:0105 A9 38
|
|
cmp Zp53 ; CPU:$C107 PRG:0107 C5 53
|
|
beq RestartInit ; CPU:$C109 PRG:0109 F0 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ContinueFrame
|
|
; Global: Tail of the frame: jumps back to the top of MainGameLoop.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: None.
|
|
; -----------------------------------------------------------------------------
|
|
ContinueFrame:
|
|
jmp $C0DF ; CPU:$C10B PRG:010B 4C DF C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: RestartInit
|
|
; Global: Jumps back to InitTestScreen after the frame-counter timeout expires.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: None.
|
|
; -----------------------------------------------------------------------------
|
|
RestartInit:
|
|
jmp $C055 ; CPU:$C10E PRG:010E 4C 55 C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: DispatchOnMarkerValue
|
|
; Global: Compares MarkerValue against $70 and $88 and selects one of three test modes, running the marker update path when neither matches.
|
|
; Local: Branches into the chosen mode; each mode ends in its own frame loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
DispatchOnMarkerValue:
|
|
lda #$70 ; CPU:$C111 PRG:0111 A9 70
|
|
cmp Zp55 ; CPU:$C113 PRG:0113 C5 55
|
|
beq EnterTestMode70 ; CPU:$C115 PRG:0115 F0 12
|
|
lda #$88 ; CPU:$C117 PRG:0117 A9 88
|
|
cmp Zp55 ; CPU:$C119 PRG:0119 C5 55
|
|
beq EnterTestMode88 ; CPU:$C11B PRG:011B F0 12
|
|
lda #$A0 ; CPU:$C11D PRG:011D A9 A0
|
|
cmp Zp55 ; CPU:$C11F PRG:011F C5 55
|
|
beq ExitToInit ; CPU:$C121 PRG:0121 F0 03
|
|
jmp $C0DF ; CPU:$C123 PRG:0123 4C DF C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ExitToInit
|
|
; Global: Returns to InitTestScreen to restart the default test screen.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: None.
|
|
; -----------------------------------------------------------------------------
|
|
ExitToInit:
|
|
jmp $C055 ; CPU:$C126 PRG:0126 4C 55 C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: EnterTestMode70
|
|
; Global: Enters the test mode selected when MarkerValue equals $70: clears OAM, samples the controller, then jumps into the mode's own frame loop.
|
|
; Local: Jumps into the mode-70 loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
EnterTestMode70:
|
|
jsr $C17F ; CPU:$C129 PRG:0129 20 7F C1
|
|
jmp $CB03 ; CPU:$C12C PRG:012C 4C 03 CB
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: EnterTestMode88
|
|
; Global: Enters the test mode selected when MarkerValue equals $88.
|
|
; Local: Jumps into the mode-88 loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
EnterTestMode88:
|
|
jsr $C17F ; CPU:$C12F PRG:012F 20 7F C1
|
|
jmp $C23F ; CPU:$C132 PRG:0132 4C 3F C2
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: UpdateButtonMarker
|
|
; Global: Loads the marker value appropriate to the current mode and hands it to ApplyMarkerValueEnableAudio.
|
|
; Local: Falls through to ApplyMarkerValueEnableAudio.
|
|
; Parameters: None.
|
|
; Returns: A = marker value to apply.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
UpdateButtonMarker:
|
|
jsr $CAB1 ; CPU:$C135 PRG:0135 20 B1 CA
|
|
lda #$70 ; CPU:$C138 PRG:0138 A9 70
|
|
cmp Zp55 ; CPU:$C13A PRG:013A C5 55
|
|
beq LoadMarkerValue88 ; CPU:$C13C PRG:013C F0 0F
|
|
lda #$88 ; CPU:$C13E PRG:013E A9 88
|
|
cmp Zp55 ; CPU:$C140 PRG:0140 C5 55
|
|
beq LoadMarkerValueA0 ; CPU:$C142 PRG:0142 F0 0E
|
|
lda #$A0 ; CPU:$C144 PRG:0144 A9 A0
|
|
cmp Zp55 ; CPU:$C146 PRG:0146 C5 55
|
|
beq LoadMarkerValue70 ; CPU:$C148 PRG:0148 F0 0D
|
|
jmp $C0DF ; CPU:$C14A PRG:014A 4C DF C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: LoadMarkerValue88
|
|
; Global: Loads marker value $88 and tail-jumps to ApplyMarkerValueEnableAudio. One of three tiny thunks that share a single tail.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
LoadMarkerValue88:
|
|
lda #$88 ; CPU:$C14D PRG:014D A9 88
|
|
jmp $C15C ; CPU:$C14F PRG:014F 4C 5C C1
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: LoadMarkerValueA0
|
|
; Global: Loads marker value $A0 and tail-jumps to ApplyMarkerValueEnableAudio.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
LoadMarkerValueA0:
|
|
lda #$A0 ; CPU:$C152 PRG:0152 A9 A0
|
|
jmp $C15C ; CPU:$C154 PRG:0154 4C 5C C1
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: LoadMarkerValue70
|
|
; Global: Loads marker value $70 and tail-jumps to ApplyMarkerValueEnableAudio.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
LoadMarkerValue70:
|
|
lda #$70 ; CPU:$C157 PRG:0157 A9 70
|
|
jmp $C15C ; CPU:$C159 PRG:0159 4C 5C C1
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ApplyMarkerValueEnableAudio
|
|
; Global: Writes the marker value to the first OAM entry and to the PPUCTRL shadow, then enables the APU and writes the sound-enable byte.
|
|
; Local: Returns to the caller once audio is enabled.
|
|
; Parameters: A = marker value ($70, $88 or $A0).
|
|
; Returns: Nothing.
|
|
; Clobbers: A; $0200, $4015, PpuCtrlShadow, MarkerValue.
|
|
; -----------------------------------------------------------------------------
|
|
ApplyMarkerValueEnableAudio:
|
|
sta $0200 ; CPU:$C15C PRG:015C 8D 00 02
|
|
sta Zp55 ; CPU:$C15F PRG:015F 85 55
|
|
lda #$01 ; CPU:$C161 PRG:0161 A9 01
|
|
ora $4015 ; CPU:$C163 PRG:0163 0D 15 40
|
|
sta $4015 ; CPU:$C166 PRG:0166 8D 15 40
|
|
lda #$29 ; CPU:$C169 PRG:0169 A9 29
|
|
sta $4003 ; CPU:$C16B PRG:016B 8D 03 40
|
|
jsr $C17F ; CPU:$C16E PRG:016E 20 7F C1
|
|
jmp $C0DF ; CPU:$C171 PRG:0171 4C DF C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ClearOam
|
|
; Global: Fills all 256 bytes of OAM with $F4, parking every sprite below the visible screen.
|
|
; Local: Returns to its caller when X wraps.
|
|
; Parameters: A = $F4, X = 0 on entry.
|
|
; Returns: X wrapped to $00.
|
|
; Clobbers: A, X; $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
ClearOam:
|
|
lda #$F4 ; CPU:$C174 PRG:0174 A9 F4
|
|
ldx #$00 ; CPU:$C176 PRG:0176 A2 00
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ClearOamLoop
|
|
; Global: Inner loop of ClearOam: one store per X value.
|
|
; Local: Loops until X wraps, then returns.
|
|
; Parameters: X = OAM index.
|
|
; Returns: X wrapped to $00.
|
|
; Clobbers: X; $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
ClearOamLoop:
|
|
sta $0200,x ; CPU:$C178 PRG:0178 9D 00 02
|
|
inx ; CPU:$C17B PRG:017B E8
|
|
bne ClearOamLoop ; CPU:$C17C PRG:017C D0 FA
|
|
rts ; CPU:$C17E PRG:017E 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: SampleControllerKeepX
|
|
; Global: Waits for vblank, samples the controller, and restores X afterwards so the caller's index survives.
|
|
; Local: Returns to the caller with X preserved.
|
|
; Parameters: None.
|
|
; Returns: Button bits stored; X restored.
|
|
; Clobbers: A; stack via pha/pla.
|
|
; -----------------------------------------------------------------------------
|
|
SampleControllerKeepX:
|
|
txa ; CPU:$C17F PRG:017F 8A
|
|
pha ; CPU:$C180 PRG:0180 48
|
|
jsr $CCE2 ; CPU:$C181 PRG:0181 20 E2 CC
|
|
jsr $CC4F ; CPU:$C184 PRG:0184 20 4F CC
|
|
pla ; CPU:$C187 PRG:0187 68
|
|
tax ; CPU:$C188 PRG:0188 AA
|
|
lda #$FF ; CPU:$C189 PRG:0189 A9 FF
|
|
and Zp40,x ; CPU:$C18B PRG:018B 35 40
|
|
bne SampleControllerKeepX ; CPU:$C18D PRG:018D D0 F0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: SampleControllerKeepXAlt
|
|
; Global: Alternate controller sample that also preserves X, used by the mode-70 scan which walks all eight buttons.
|
|
; Local: Returns with X preserved.
|
|
; Parameters: None.
|
|
; Returns: Button bits stored.
|
|
; Clobbers: A; stack via pha/pla.
|
|
; -----------------------------------------------------------------------------
|
|
SampleControllerKeepXAlt:
|
|
txa ; CPU:$C18F PRG:018F 8A
|
|
pha ; CPU:$C190 PRG:0190 48
|
|
jsr $CCE2 ; CPU:$C191 PRG:0191 20 E2 CC
|
|
jsr $CC4F ; CPU:$C194 PRG:0194 20 4F CC
|
|
pla ; CPU:$C197 PRG:0197 68
|
|
tax ; CPU:$C198 PRG:0198 AA
|
|
lda #$FF ; CPU:$C199 PRG:0199 A9 FF
|
|
and Zp40,x ; CPU:$C19B PRG:019B 35 40
|
|
bne SampleControllerKeepXAlt ; CPU:$C19D PRG:019D D0 F0
|
|
rts ; CPU:$C19F PRG:019F 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CopySpriteTemplateTable
|
|
; Global: Copies a 32-byte sprite template from ROM at $D6A5 into the OAM shadow at $02E0.
|
|
; Local: Falls into CopySpriteTemplateLoop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: X.
|
|
; -----------------------------------------------------------------------------
|
|
CopySpriteTemplateTable:
|
|
ldx #$1F ; CPU:$C1A0 PRG:01A0 A2 1F
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CopySpriteTemplateLoop
|
|
; Global: Byte copy loop for CopySpriteTemplateTable, descending X from $1F.
|
|
; Local: Falls through when X goes negative.
|
|
; Parameters: X = descending index.
|
|
; Returns: X = $FF on exit.
|
|
; Clobbers: X; $02E0-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
CopySpriteTemplateLoop:
|
|
lda $D6A5,x ; CPU:$C1A2 PRG:01A2 BD A5 D6
|
|
sta $02E0,x ; CPU:$C1A5 PRG:01A5 9D E0 02
|
|
dex ; CPU:$C1A8 PRG:01A8 CA
|
|
bpl CopySpriteTemplateLoop ; CPU:$C1A9 PRG:01A9 10 F7
|
|
ldx #$F0 ; CPU:$C1AB PRG:01AB A2 F0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ScanAllControllerBits
|
|
; Global: Walks every button bit, sampling the controller once per bit to build a latched picture of all eight inputs.
|
|
; Local: Returns once all bits have been visited.
|
|
; Parameters: None.
|
|
; Returns: All button states latched.
|
|
; Clobbers: A, X; button state array.
|
|
; -----------------------------------------------------------------------------
|
|
ScanAllControllerBits:
|
|
jsr $CCE2 ; CPU:$C1AD PRG:01AD 20 E2 CC
|
|
txa ; CPU:$C1B0 PRG:01B0 8A
|
|
pha ; CPU:$C1B1 PRG:01B1 48
|
|
jsr $CC4F ; CPU:$C1B2 PRG:01B2 20 4F CC
|
|
lda #$00 ; CPU:$C1B5 PRG:01B5 A9 00
|
|
cmp Zp40 ; CPU:$C1B7 PRG:01B7 C5 40
|
|
bne UpdateAllOamEntries ; CPU:$C1B9 PRG:01B9 D0 11
|
|
cmp Zp41 ; CPU:$C1BB PRG:01BB C5 41
|
|
bne UpdateAllOamEntries ; CPU:$C1BD PRG:01BD D0 0D
|
|
cmp Zp43 ; CPU:$C1BF PRG:01BF C5 43
|
|
bne UpdateAllOamEntries ; CPU:$C1C1 PRG:01C1 D0 09
|
|
cmp Zp44 ; CPU:$C1C3 PRG:01C3 C5 44
|
|
bne UpdateAllOamEntries ; CPU:$C1C5 PRG:01C5 D0 05
|
|
lda #$C0 ; CPU:$C1C7 PRG:01C7 A9 C0
|
|
sta $4015 ; CPU:$C1C9 PRG:01C9 8D 15 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: UpdateAllOamEntries
|
|
; Global: Calls the per-button OAM updater eight times, once per sprite slot, with the Y offset advancing by $20 each round.
|
|
; Local: Returns after all eight slots are written.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: X, Y; $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
UpdateAllOamEntries:
|
|
ldy #$00 ; CPU:$C1CC PRG:01CC A0 00
|
|
ldx #$00 ; CPU:$C1CE PRG:01CE A2 00
|
|
jsr $C361 ; CPU:$C1D0 PRG:01D0 20 61 C3
|
|
ldy #$20 ; CPU:$C1D3 PRG:01D3 A0 20
|
|
inx ; CPU:$C1D5 PRG:01D5 E8
|
|
jsr $C361 ; CPU:$C1D6 PRG:01D6 20 61 C3
|
|
ldy #$40 ; CPU:$C1D9 PRG:01D9 A0 40
|
|
inx ; CPU:$C1DB PRG:01DB E8
|
|
inx ; CPU:$C1DC PRG:01DC E8
|
|
jsr $C361 ; CPU:$C1DD PRG:01DD 20 61 C3
|
|
ldy #$60 ; CPU:$C1E0 PRG:01E0 A0 60
|
|
inx ; CPU:$C1E2 PRG:01E2 E8
|
|
jsr $C361 ; CPU:$C1E3 PRG:01E3 20 61 C3
|
|
pla ; CPU:$C1E6 PRG:01E6 68
|
|
tax ; CPU:$C1E7 PRG:01E7 AA
|
|
dex ; CPU:$C1E8 PRG:01E8 CA
|
|
bne ScanAllControllerBits ; CPU:$C1E9 PRG:01E9 D0 C2
|
|
jmp $C055 ; CPU:$C1EB PRG:01EB 4C 55 C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: PrepareButtonOam
|
|
; Global: Copies the button OAM template from ROM at $D6C5 into $02E0, preserving the caller's X and Y across the controller sample.
|
|
; Local: Returns to the caller with X and Y restored.
|
|
; Parameters: None.
|
|
; Returns: OAM shadow primed.
|
|
; Clobbers: A, X, Y; stack via pha/pla.
|
|
; -----------------------------------------------------------------------------
|
|
PrepareButtonOam:
|
|
tya ; CPU:$C1EE PRG:01EE 98
|
|
pha ; CPU:$C1EF PRG:01EF 48
|
|
txa ; CPU:$C1F0 PRG:01F0 8A
|
|
pha ; CPU:$C1F1 PRG:01F1 48
|
|
ldx #$1F ; CPU:$C1F2 PRG:01F2 A2 1F
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CopyButtonOamLoop
|
|
; Global: Descending byte copy for PrepareButtonOam.
|
|
; Local: Falls through when X goes negative.
|
|
; Parameters: X = descending index.
|
|
; Returns: X = $FF on exit.
|
|
; Clobbers: X; $02E0-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
CopyButtonOamLoop:
|
|
lda $D6C5,x ; CPU:$C1F4 PRG:01F4 BD C5 D6
|
|
sta $02E0,x ; CPU:$C1F7 PRG:01F7 9D E0 02
|
|
dex ; CPU:$C1FA PRG:01FA CA
|
|
bpl CopyButtonOamLoop ; CPU:$C1FB PRG:01FB 10 F7
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReadButtonBitUpdateOam
|
|
; Global: Tests one controller bit and updates the matching OAM entry accordingly.
|
|
; Local: Returns to its caller.
|
|
; Parameters: X = button index.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X; $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
ReadButtonBitUpdateOam:
|
|
jsr $CCE2 ; CPU:$C1FD PRG:01FD 20 E2 CC
|
|
jsr $CC4F ; CPU:$C200 PRG:0200 20 4F CC
|
|
pla ; CPU:$C203 PRG:0203 68
|
|
tax ; CPU:$C204 PRG:0204 AA
|
|
lda #$00 ; CPU:$C205 PRG:0205 A9 00
|
|
cmp Zp40,x ; CPU:$C207 PRG:0207 D5 40
|
|
beq ResetButtonStateAndOam ; CPU:$C209 PRG:0209 F0 05
|
|
txa ; CPU:$C20B PRG:020B 8A
|
|
pha ; CPU:$C20C PRG:020C 48
|
|
jmp $C1FD ; CPU:$C20D PRG:020D 4C FD C1
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ResetButtonStateAndOam
|
|
; Global: Clears the button state array, samples the controller, and refills the OAM shadow with $F4 so the display starts from a known state.
|
|
; Local: Returns to its caller.
|
|
; Parameters: None.
|
|
; Returns: Button state cleared; OAM shadow blanked.
|
|
; Clobbers: A, X; $0200-$02FF, button state array.
|
|
; -----------------------------------------------------------------------------
|
|
ResetButtonStateAndOam:
|
|
lda #$00 ; CPU:$C210 PRG:0210 A9 00
|
|
sta Zp4E,x ; CPU:$C212 PRG:0212 95 4E
|
|
txa ; CPU:$C214 PRG:0214 8A
|
|
pha ; CPU:$C215 PRG:0215 48
|
|
ldx #$1F ; CPU:$C216 PRG:0216 A2 1F
|
|
lda #$F4 ; CPU:$C218 PRG:0218 A9 F4
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: FillOamShadowLoop
|
|
; Global: Descending fill of the OAM shadow with a constant.
|
|
; Local: Falls through when X goes negative.
|
|
; Parameters: X = descending index; A = fill value.
|
|
; Returns: X = $FF on exit.
|
|
; Clobbers: X; $02E0-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
FillOamShadowLoop:
|
|
sta $02E0,x ; CPU:$C21A PRG:021A 9D E0 02
|
|
dex ; CPU:$C21D PRG:021D CA
|
|
bpl FillOamShadowLoop ; CPU:$C21E PRG:021E 10 FA
|
|
pla ; CPU:$C220 PRG:0220 68
|
|
tax ; CPU:$C221 PRG:0221 AA
|
|
pla ; CPU:$C222 PRG:0222 68
|
|
tay ; CPU:$C223 PRG:0223 A8
|
|
lda #$03 ; CPU:$C224 PRG:0224 A9 03
|
|
sta $0202,y ; CPU:$C226 PRG:0226 99 02 02
|
|
sta $0206,y ; CPU:$C229 PRG:0229 99 06 02
|
|
sta $020A,y ; CPU:$C22C PRG:022C 99 0A 02
|
|
sta $020E,y ; CPU:$C22F PRG:022F 99 0E 02
|
|
sta $0212,y ; CPU:$C232 PRG:0232 99 12 02
|
|
sta $0216,y ; CPU:$C235 PRG:0235 99 16 02
|
|
sta $021A,y ; CPU:$C238 PRG:0238 99 1A 02
|
|
sta $021E,y ; CPU:$C23B PRG:023B 99 1E 02
|
|
rts ; CPU:$C23E PRG:023E 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: InitTestScreen88
|
|
; Global: Sets up the mode-88 screen: writes a $FF pattern into $6000, clears RAM with the screen pattern, and primes the OAM from a ROM table.
|
|
; Local: Falls into the mode-88 frame loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $6000, $0000-$05FF, $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
InitTestScreen88:
|
|
jsr $CD2F ; CPU:$C23F PRG:023F 20 2F CD
|
|
ldx #$00 ; CPU:$C242 PRG:0242 A2 00
|
|
lda #$FF ; CPU:$C244 PRG:0244 A9 FF
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WriteRamPatternLoop
|
|
; Global: Writes a constant pattern into $6000 for six bytes.
|
|
; Local: Returns to its caller once X reaches six.
|
|
; Parameters: X = index; A = pattern byte.
|
|
; Returns: X = six.
|
|
; Clobbers: A, X; $6000-$6005.
|
|
; -----------------------------------------------------------------------------
|
|
WriteRamPatternLoop:
|
|
sta $6000,x ; CPU:$C246 PRG:0246 9D 00 60
|
|
inx ; CPU:$C249 PRG:0249 E8
|
|
cpx #$06 ; CPU:$C24A PRG:024A E0 06
|
|
bne WriteRamPatternLoop ; CPU:$C24C PRG:024C D0 F8
|
|
lda #$00 ; CPU:$C24E PRG:024E A9 00
|
|
ldx #$00 ; CPU:$C250 PRG:0250 A2 00
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ClearRamPass3Loop
|
|
; Global: Third RAM-clearing pass, used by mode 88.
|
|
; Local: Returns to its caller when X wraps.
|
|
; Parameters: X = page offset; A = fill value.
|
|
; Returns: X wrapped to $00.
|
|
; Clobbers: A, X; $0000-$05FF.
|
|
; -----------------------------------------------------------------------------
|
|
ClearRamPass3Loop:
|
|
sta Zp00,x ; CPU:$C252 PRG:0252 95 00
|
|
sta $0100,x ; CPU:$C254 PRG:0254 9D 00 01
|
|
lda #$F4 ; CPU:$C257 PRG:0257 A9 F4
|
|
sta $0200,x ; CPU:$C259 PRG:0259 9D 00 02
|
|
lda #$00 ; CPU:$C25C PRG:025C A9 00
|
|
sta $0300,x ; CPU:$C25E PRG:025E 9D 00 03
|
|
sta $0400,x ; CPU:$C261 PRG:0261 9D 00 04
|
|
sta $0500,x ; CPU:$C264 PRG:0264 9D 00 05
|
|
sta $0600,x ; CPU:$C267 PRG:0267 9D 00 06
|
|
inx ; CPU:$C26A PRG:026A E8
|
|
bne ClearRamPass3Loop ; CPU:$C26B PRG:026B D0 E5
|
|
lda #$10 ; CPU:$C26D PRG:026D A9 10
|
|
sta $2000 ; CPU:$C26F PRG:026F 8D 00 20
|
|
sta ZpEF ; CPU:$C272 PRG:0272 85 EF
|
|
lda #$00 ; CPU:$C274 PRG:0274 A9 00
|
|
sta $2001 ; CPU:$C276 PRG:0276 8D 01 20
|
|
sta ZpEE ; CPU:$C279 PRG:0279 85 EE
|
|
lda #$20 ; CPU:$C27B PRG:027B A9 20
|
|
ldx #$24 ; CPU:$C27D PRG:027D A2 24
|
|
ldy #$00 ; CPU:$C27F PRG:027F A0 00
|
|
jsr $CDEE ; CPU:$C281 PRG:0281 20 EE CD
|
|
jsr $CD3F ; CPU:$C284 PRG:0284 20 3F CD
|
|
asl ZpCF ; CPU:$C287 PRG:0287 06 CF
|
|
jsr $CE3C ; CPU:$C289 PRG:0289 20 3C CE
|
|
jsr $CD3F ; CPU:$C28C PRG:028C 20 3F CD
|
|
sbc ZpD1,x ; CPU:$C28F PRG:028F F5 D1
|
|
jsr $CE3C ; CPU:$C291 PRG:0291 20 3C CE
|
|
lda #$51 ; CPU:$C294 PRG:0294 A9 51
|
|
sta $0300 ; CPU:$C296 PRG:0296 8D 00 03
|
|
lda #$22 ; CPU:$C299 PRG:0299 A9 22
|
|
ldx #$28 ; CPU:$C29B PRG:029B A2 28
|
|
jsr $CE98 ; CPU:$C29D PRG:029D 20 98 CE
|
|
.byte $AF, $D4, $20 ; CPU:$C2A0 PRG:02A0 AF D4 20 -- lax $20D4 (undocumented; ca65 cannot encode)
|
|
.byte $74, $C1 ; CPU:$C2A3 PRG:02A3 74 C1 -- nop ZpC1,x (undocumented; ca65 cannot encode)
|
|
ldx #$DF ; CPU:$C2A5 PRG:02A5 A2 DF
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CopyOamFromTable
|
|
; Global: Copies a ROM sprite table into the live OAM.
|
|
; Local: Falls through when X reaches zero.
|
|
; Parameters: X = index; A = table base.
|
|
; Returns: X wrapped to $00.
|
|
; Clobbers: A, X; $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
CopyOamFromTable:
|
|
lda $D4E3,x ; CPU:$C2A7 PRG:02A7 BD E3 D4
|
|
sta $0200,x ; CPU:$C2AA PRG:02AA 9D 00 02
|
|
dex ; CPU:$C2AD PRG:02AD CA
|
|
bne CopyOamFromTable ; CPU:$C2AE PRG:02AE D0 F7
|
|
lda $D4E3,x ; CPU:$C2B0 PRG:02B0 BD E3 D4
|
|
sta $0200,x ; CPU:$C2B3 PRG:02B3 9D 00 02
|
|
lda #$FF ; CPU:$C2B6 PRG:02B6 A9 FF
|
|
sta Zp6A ; CPU:$C2B8 PRG:02B8 85 6A
|
|
lda #$00 ; CPU:$C2BA PRG:02BA A9 00
|
|
sta Zp4E ; CPU:$C2BC PRG:02BC 85 4E
|
|
sta Zp4F ; CPU:$C2BE PRG:02BE 85 4F
|
|
sta Zp51 ; CPU:$C2C0 PRG:02C0 85 51
|
|
sta Zp52 ; CPU:$C2C2 PRG:02C2 85 52
|
|
sta Zp54 ; CPU:$C2C4 PRG:02C4 85 54
|
|
sta Zp53 ; CPU:$C2C6 PRG:02C6 85 53
|
|
sta Zp60 ; CPU:$C2C8 PRG:02C8 85 60
|
|
sta Zp5B ; CPU:$C2CA PRG:02CA 85 5B
|
|
sta Zp56 ; CPU:$C2CC PRG:02CC 85 56
|
|
sta Zp61 ; CPU:$C2CE PRG:02CE 85 61
|
|
sta Zp5C ; CPU:$C2D0 PRG:02D0 85 5C
|
|
sta Zp57 ; CPU:$C2D2 PRG:02D2 85 57
|
|
sta Zp65 ; CPU:$C2D4 PRG:02D4 85 65
|
|
sta Zp66 ; CPU:$C2D6 PRG:02D6 85 66
|
|
sta Zp68 ; CPU:$C2D8 PRG:02D8 85 68
|
|
sta Zp69 ; CPU:$C2DA PRG:02DA 85 69
|
|
lda #$BF ; CPU:$C2DC PRG:02DC A9 BF
|
|
sta $4000 ; CPU:$C2DE PRG:02DE 8D 00 40
|
|
jsr $CD39 ; CPU:$C2E1 PRG:02E1 20 39 CD
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: PollControllerCountFrames
|
|
; Global: Samples the controller and counts consecutive frames, branching once ButtonHoldCounter reaches $0F.
|
|
; Local: Falls through to UpdateAllButtonMarkers.
|
|
; Parameters: None.
|
|
; Returns: Hold counter advanced.
|
|
; Clobbers: A, X; ButtonHoldCounter.
|
|
; -----------------------------------------------------------------------------
|
|
PollControllerCountFrames:
|
|
jsr $CCE2 ; CPU:$C2E4 PRG:02E4 20 E2 CC
|
|
jsr $CC4F ; CPU:$C2E7 PRG:02E7 20 4F CC
|
|
inc Zp6A ; CPU:$C2EA PRG:02EA E6 6A
|
|
lda #$0F ; CPU:$C2EC PRG:02EC A9 0F
|
|
cmp Zp6A ; CPU:$C2EE PRG:02EE C5 6A
|
|
beq UpdateAllButtonMarkers ; CPU:$C2F0 PRG:02F0 F0 03
|
|
jmp $C2FE ; CPU:$C2F2 PRG:02F2 4C FE C2
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: UpdateAllButtonMarkers
|
|
; Global: Calls each MarkerUpdateN group in turn so every button indicator is refreshed.
|
|
; Local: Returns to the caller after all twelve groups.
|
|
; Parameters: None.
|
|
; Returns: All indicators updated.
|
|
; Clobbers: A; OAM $0285-$0351.
|
|
; -----------------------------------------------------------------------------
|
|
UpdateAllButtonMarkers:
|
|
jsr $C524 ; CPU:$C2F5 PRG:02F5 20 24 C5
|
|
jsr $C7D7 ; CPU:$C2F8 PRG:02F8 20 D7 C7
|
|
jsr $CA8A ; CPU:$C2FB PRG:02FB 20 8A CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckAnyButtonHeld
|
|
; Global: Tests the controller byte against each button mask and branches if any are held.
|
|
; Local: Branches to UpdateOamFromButtons when a button is active.
|
|
; Parameters: None.
|
|
; Returns: Z flag reflects the test.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
CheckAnyButtonHeld:
|
|
lda #$00 ; CPU:$C2FE PRG:02FE A9 00
|
|
cmp Zp40 ; CPU:$C300 PRG:0300 C5 40
|
|
bne UpdateOamFromButtons ; CPU:$C302 PRG:0302 D0 11
|
|
cmp Zp41 ; CPU:$C304 PRG:0304 C5 41
|
|
bne UpdateOamFromButtons ; CPU:$C306 PRG:0306 D0 0D
|
|
cmp Zp43 ; CPU:$C308 PRG:0308 C5 43
|
|
bne UpdateOamFromButtons ; CPU:$C30A PRG:030A D0 09
|
|
cmp Zp44 ; CPU:$C30C PRG:030C C5 44
|
|
bne UpdateOamFromButtons ; CPU:$C30E PRG:030E D0 05
|
|
lda #$C0 ; CPU:$C310 PRG:0310 A9 C0
|
|
sta $4015 ; CPU:$C312 PRG:0312 8D 15 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: UpdateOamFromButtons
|
|
; Global: Writes OAM entries for whichever buttons mode 88 sees as held.
|
|
; Local: Returns to the mode-88 frame loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
UpdateOamFromButtons:
|
|
ldy #$00 ; CPU:$C315 PRG:0315 A0 00
|
|
ldx #$00 ; CPU:$C317 PRG:0317 A2 00
|
|
jsr $C361 ; CPU:$C319 PRG:0319 20 61 C3
|
|
ldy #$20 ; CPU:$C31C PRG:031C A0 20
|
|
inx ; CPU:$C31E PRG:031E E8
|
|
jsr $C361 ; CPU:$C31F PRG:031F 20 61 C3
|
|
ldy #$40 ; CPU:$C322 PRG:0322 A0 40
|
|
inx ; CPU:$C324 PRG:0324 E8
|
|
inx ; CPU:$C325 PRG:0325 E8
|
|
jsr $C361 ; CPU:$C326 PRG:0326 20 61 C3
|
|
ldy #$60 ; CPU:$C329 PRG:0329 A0 60
|
|
inx ; CPU:$C32B PRG:032B E8
|
|
jsr $C361 ; CPU:$C32C PRG:032C 20 61 C3
|
|
lda #$FF ; CPU:$C32F PRG:032F A9 FF
|
|
cmp Zp4E ; CPU:$C331 PRG:0331 C5 4E
|
|
bne IncrementFrameCounterAlt ; CPU:$C333 PRG:0333 D0 0F
|
|
cmp Zp4F ; CPU:$C335 PRG:0335 C5 4F
|
|
bne IncrementFrameCounterAlt ; CPU:$C337 PRG:0337 D0 0B
|
|
cmp Zp51 ; CPU:$C339 PRG:0339 C5 51
|
|
bne IncrementFrameCounterAlt ; CPU:$C33B PRG:033B D0 07
|
|
cmp Zp52 ; CPU:$C33D PRG:033D C5 52
|
|
bne IncrementFrameCounterAlt ; CPU:$C33F PRG:033F D0 03
|
|
jmp $C1A0 ; CPU:$C341 PRG:0341 4C A0 C1
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: IncrementFrameCounterAlt
|
|
; Global: Mode-88 copy of the 16-bit frame counter increment.
|
|
; Local: Falls through to CheckFrameCounterLimitAlt.
|
|
; Parameters: None.
|
|
; Returns: Counter advanced.
|
|
; Clobbers: FrameCounterLo/Hi.
|
|
; -----------------------------------------------------------------------------
|
|
IncrementFrameCounterAlt:
|
|
inc Zp54 ; CPU:$C344 PRG:0344 E6 54
|
|
bne CheckFrameCounterLimitAlt ; CPU:$C346 PRG:0346 D0 02
|
|
inc Zp53 ; CPU:$C348 PRG:0348 E6 53
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckFrameCounterLimitAlt
|
|
; Global: Mode-88 copy of the frame-counter timeout test.
|
|
; Local: Branches onward or exits to InitTestScreen.
|
|
; Parameters: None.
|
|
; Returns: Z flag reflects the comparison.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
CheckFrameCounterLimitAlt:
|
|
lda #$00 ; CPU:$C34A PRG:034A A9 00
|
|
cmp Zp54 ; CPU:$C34C PRG:034C C5 54
|
|
bne SetBurstWriteIndex ; CPU:$C34E PRG:034E D0 06
|
|
lda #$38 ; CPU:$C350 PRG:0350 A9 38
|
|
cmp Zp53 ; CPU:$C352 PRG:0352 C5 53
|
|
beq ExitToInitAlt ; CPU:$C354 PRG:0354 F0 08
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: SetBurstWriteIndex
|
|
; Global: Stores the burst command index $22 so the next VRAM burst starts from the right entry.
|
|
; Local: Jumps back into the mode-88 frame loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A; $0302.
|
|
; -----------------------------------------------------------------------------
|
|
SetBurstWriteIndex:
|
|
lda #$22 ; CPU:$C356 PRG:0356 A9 22
|
|
sta $0302 ; CPU:$C358 PRG:0358 8D 02 03
|
|
jmp $C2E4 ; CPU:$C35B PRG:035B 4C E4 C2
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ExitToInitAlt
|
|
; Global: Jumps back to InitTestScreen from the mode-88 loop.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: None.
|
|
; -----------------------------------------------------------------------------
|
|
ExitToInitAlt:
|
|
jmp $C055 ; CPU:$C35E PRG:035E 4C 55 C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: DispatchButtonBits
|
|
; Global: Walks the eight bits of the controller byte and calls the matching handler for each one that is set, writing an OAM entry and triggering an APU write per pressed button.
|
|
; Local: Returns to FinishButtonDispatch once all eight bits are visited.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
DispatchButtonBits:
|
|
lda Zp40,x ; CPU:$C361 PRG:0361 B5 40
|
|
pha ; CPU:$C363 PRG:0363 48
|
|
jsr $CAB8 ; CPU:$C364 PRG:0364 20 B8 CA
|
|
rol Zp40,x ; CPU:$C367 PRG:0367 36 40
|
|
bcc ButtonBit0_Test ; CPU:$C369 PRG:0369 90 0C
|
|
ror Zp40,x ; CPU:$C36B PRG:036B 76 40
|
|
rol Zp65,x ; CPU:$C36D PRG:036D 36 65
|
|
bcs ButtonBit1_Test ; CPU:$C36F PRG:036F B0 0F
|
|
inc Zp56,x ; CPU:$C371 PRG:0371 F6 56
|
|
sec ; CPU:$C373 PRG:0373 38
|
|
jmp $C380 ; CPU:$C374 PRG:0374 4C 80 C3
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit0_Test
|
|
; Global: Tests controller bit 0 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit0_Test:
|
|
ror Zp40,x ; CPU:$C377 PRG:0377 76 40
|
|
rol Zp65,x ; CPU:$C379 PRG:0379 36 65
|
|
bcc ButtonBit1_Test ; CPU:$C37B PRG:037B 90 03
|
|
inc Zp56,x ; CPU:$C37D PRG:037D F6 56
|
|
clc ; CPU:$C37F PRG:037F 18
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit1_Test
|
|
; Global: Tests controller bit 1 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit1_Test:
|
|
ror Zp65,x ; CPU:$C380 PRG:0380 76 65
|
|
rol Zp40,x ; CPU:$C382 PRG:0382 36 40
|
|
bcc ButtonBit2_Test ; CPU:$C384 PRG:0384 90 24
|
|
lda #$01 ; CPU:$C386 PRG:0386 A9 01
|
|
and $4015 ; CPU:$C388 PRG:0388 2D 15 40
|
|
bne HandleButtonPress1 ; CPU:$C38B PRG:038B D0 0F
|
|
lda #$01 ; CPU:$C38D PRG:038D A9 01
|
|
sta $4015 ; CPU:$C38F PRG:038F 8D 15 40
|
|
lda #$FD ; CPU:$C392 PRG:0392 A9 FD
|
|
sta $4002 ; CPU:$C394 PRG:0394 8D 02 40
|
|
lda #$29 ; CPU:$C397 PRG:0397 A9 29
|
|
sta $4003 ; CPU:$C399 PRG:0399 8D 03 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleButtonPress1
|
|
; Global: Handler for controller bit 1: writes an OAM tile and attribute entry for the pressed button and issues the matching APU write.
|
|
; Local: RTS once the OAM entry and APU write are done.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
HandleButtonPress1:
|
|
lda #$02 ; CPU:$C39C PRG:039C A9 02
|
|
sta $0202,y ; CPU:$C39E PRG:039E 99 02 02
|
|
lda #$80 ; CPU:$C3A1 PRG:03A1 A9 80
|
|
ora Zp4E,x ; CPU:$C3A3 PRG:03A3 15 4E
|
|
sta Zp4E,x ; CPU:$C3A5 PRG:03A5 95 4E
|
|
jsr $CAB1 ; CPU:$C3A7 PRG:03A7 20 B1 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit2_Test
|
|
; Global: Tests controller bit 2 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit2_Test:
|
|
rol Zp40,x ; CPU:$C3AA PRG:03AA 36 40
|
|
bcc ButtonBit3_Test ; CPU:$C3AC PRG:03AC 90 0E
|
|
ror Zp40,x ; CPU:$C3AE PRG:03AE 76 40
|
|
rol Zp65,x ; CPU:$C3B0 PRG:03B0 36 65
|
|
rol Zp65,x ; CPU:$C3B2 PRG:03B2 36 65
|
|
bcs ButtonBit4_Test ; CPU:$C3B4 PRG:03B4 B0 11
|
|
inc Zp5B,x ; CPU:$C3B6 PRG:03B6 F6 5B
|
|
sec ; CPU:$C3B8 PRG:03B8 38
|
|
jmp $C3C7 ; CPU:$C3B9 PRG:03B9 4C C7 C3
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit3_Test
|
|
; Global: Tests controller bit 3 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit3_Test:
|
|
ror Zp40,x ; CPU:$C3BC PRG:03BC 76 40
|
|
rol Zp65,x ; CPU:$C3BE PRG:03BE 36 65
|
|
rol Zp65,x ; CPU:$C3C0 PRG:03C0 36 65
|
|
bcc ButtonBit4_Test ; CPU:$C3C2 PRG:03C2 90 03
|
|
inc Zp5B,x ; CPU:$C3C4 PRG:03C4 F6 5B
|
|
clc ; CPU:$C3C6 PRG:03C6 18
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit4_Test
|
|
; Global: Tests controller bit 4 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit4_Test:
|
|
ror Zp65,x ; CPU:$C3C7 PRG:03C7 76 65
|
|
ror Zp65,x ; CPU:$C3C9 PRG:03C9 76 65
|
|
rol Zp40,x ; CPU:$C3CB PRG:03CB 36 40
|
|
bcc ButtonBit5_Test ; CPU:$C3CD PRG:03CD 90 24
|
|
lda #$01 ; CPU:$C3CF PRG:03CF A9 01
|
|
and $4015 ; CPU:$C3D1 PRG:03D1 2D 15 40
|
|
bne HandleButtonPress2 ; CPU:$C3D4 PRG:03D4 D0 0F
|
|
lda #$01 ; CPU:$C3D6 PRG:03D6 A9 01
|
|
sta $4015 ; CPU:$C3D8 PRG:03D8 8D 15 40
|
|
lda #$C5 ; CPU:$C3DB PRG:03DB A9 C5
|
|
sta $4002 ; CPU:$C3DD PRG:03DD 8D 02 40
|
|
lda #$29 ; CPU:$C3E0 PRG:03E0 A9 29
|
|
sta $4003 ; CPU:$C3E2 PRG:03E2 8D 03 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleButtonPress2
|
|
; Global: Handler for controller bit 2: writes an OAM tile and attribute entry for the pressed button and issues the matching APU write.
|
|
; Local: RTS once the OAM entry and APU write are done.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
HandleButtonPress2:
|
|
lda #$02 ; CPU:$C3E5 PRG:03E5 A9 02
|
|
sta $0206,y ; CPU:$C3E7 PRG:03E7 99 06 02
|
|
lda #$40 ; CPU:$C3EA PRG:03EA A9 40
|
|
ora Zp4E,x ; CPU:$C3EC PRG:03EC 15 4E
|
|
sta Zp4E,x ; CPU:$C3EE PRG:03EE 95 4E
|
|
jsr $CAB1 ; CPU:$C3F0 PRG:03F0 20 B1 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit5_Test
|
|
; Global: Tests controller bit 5 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit5_Test:
|
|
rol Zp40,x ; CPU:$C3F3 PRG:03F3 36 40
|
|
bcc ButtonBit6_Test ; CPU:$C3F5 PRG:03F5 90 24
|
|
lda #$01 ; CPU:$C3F7 PRG:03F7 A9 01
|
|
and $4015 ; CPU:$C3F9 PRG:03F9 2D 15 40
|
|
bne HandleButtonPress3 ; CPU:$C3FC PRG:03FC D0 0F
|
|
lda #$01 ; CPU:$C3FE PRG:03FE A9 01
|
|
sta $4015 ; CPU:$C400 PRG:0400 8D 15 40
|
|
lda #$7D ; CPU:$C403 PRG:0403 A9 7D
|
|
sta $4002 ; CPU:$C405 PRG:0405 8D 02 40
|
|
lda #$29 ; CPU:$C408 PRG:0408 A9 29
|
|
sta $4003 ; CPU:$C40A PRG:040A 8D 03 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleButtonPress3
|
|
; Global: Handler for controller bit 3: writes an OAM tile and attribute entry for the pressed button and issues the matching APU write.
|
|
; Local: RTS once the OAM entry and APU write are done.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
HandleButtonPress3:
|
|
lda #$02 ; CPU:$C40D PRG:040D A9 02
|
|
sta $020E,y ; CPU:$C40F PRG:040F 99 0E 02
|
|
lda #$20 ; CPU:$C412 PRG:0412 A9 20
|
|
ora Zp4E,x ; CPU:$C414 PRG:0414 15 4E
|
|
sta Zp4E,x ; CPU:$C416 PRG:0416 95 4E
|
|
jsr $CAB1 ; CPU:$C418 PRG:0418 20 B1 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit6_Test
|
|
; Global: Tests controller bit 6 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit6_Test:
|
|
rol Zp40,x ; CPU:$C41B PRG:041B 36 40
|
|
bcc ButtonBit7_Test ; CPU:$C41D PRG:041D 90 10
|
|
ror Zp40,x ; CPU:$C41F PRG:041F 76 40
|
|
rol Zp65,x ; CPU:$C421 PRG:0421 36 65
|
|
rol Zp65,x ; CPU:$C423 PRG:0423 36 65
|
|
rol Zp65,x ; CPU:$C425 PRG:0425 36 65
|
|
bcs ButtonBit8_Test ; CPU:$C427 PRG:0427 B0 13
|
|
inc Zp60,x ; CPU:$C429 PRG:0429 F6 60
|
|
sec ; CPU:$C42B PRG:042B 38
|
|
jmp $C43C ; CPU:$C42C PRG:042C 4C 3C C4
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit7_Test
|
|
; Global: Tests controller bit 7 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit7_Test:
|
|
ror Zp40,x ; CPU:$C42F PRG:042F 76 40
|
|
rol Zp65,x ; CPU:$C431 PRG:0431 36 65
|
|
rol Zp65,x ; CPU:$C433 PRG:0433 36 65
|
|
rol Zp65,x ; CPU:$C435 PRG:0435 36 65
|
|
bcc ButtonBit8_Test ; CPU:$C437 PRG:0437 90 03
|
|
inc Zp60,x ; CPU:$C439 PRG:0439 F6 60
|
|
clc ; CPU:$C43B PRG:043B 18
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit8_Test
|
|
; Global: Tests controller bit 8 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit8_Test:
|
|
ror Zp65,x ; CPU:$C43C PRG:043C 76 65
|
|
ror Zp65,x ; CPU:$C43E PRG:043E 76 65
|
|
ror Zp65,x ; CPU:$C440 PRG:0440 76 65
|
|
rol Zp40,x ; CPU:$C442 PRG:0442 36 40
|
|
bcc ButtonBit9_Test ; CPU:$C444 PRG:0444 90 24
|
|
lda #$01 ; CPU:$C446 PRG:0446 A9 01
|
|
and $4015 ; CPU:$C448 PRG:0448 2D 15 40
|
|
bne HandleButtonPress4 ; CPU:$C44B PRG:044B D0 0F
|
|
lda #$01 ; CPU:$C44D PRG:044D A9 01
|
|
sta $4015 ; CPU:$C44F PRG:044F 8D 15 40
|
|
lda #$94 ; CPU:$C452 PRG:0452 A9 94
|
|
sta $4002 ; CPU:$C454 PRG:0454 8D 02 40
|
|
lda #$29 ; CPU:$C457 PRG:0457 A9 29
|
|
sta $4003 ; CPU:$C459 PRG:0459 8D 03 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleButtonPress4
|
|
; Global: Handler for controller bit 4: writes an OAM tile and attribute entry for the pressed button and issues the matching APU write.
|
|
; Local: RTS once the OAM entry and APU write are done.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
HandleButtonPress4:
|
|
lda #$02 ; CPU:$C45C PRG:045C A9 02
|
|
sta $020A,y ; CPU:$C45E PRG:045E 99 0A 02
|
|
lda #$10 ; CPU:$C461 PRG:0461 A9 10
|
|
ora Zp4E,x ; CPU:$C463 PRG:0463 15 4E
|
|
sta Zp4E,x ; CPU:$C465 PRG:0465 95 4E
|
|
jsr $CAB1 ; CPU:$C467 PRG:0467 20 B1 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit9_Test
|
|
; Global: Tests controller bit 9 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit9_Test:
|
|
rol Zp40,x ; CPU:$C46A PRG:046A 36 40
|
|
bcc ButtonBit10_Test ; CPU:$C46C PRG:046C 90 24
|
|
lda #$01 ; CPU:$C46E PRG:046E A9 01
|
|
and $4015 ; CPU:$C470 PRG:0470 2D 15 40
|
|
bne HandleButtonPress5 ; CPU:$C473 PRG:0473 D0 0F
|
|
lda #$01 ; CPU:$C475 PRG:0475 A9 01
|
|
sta $4015 ; CPU:$C477 PRG:0477 8D 15 40
|
|
lda #$53 ; CPU:$C47A PRG:047A A9 53
|
|
sta $4002 ; CPU:$C47C PRG:047C 8D 02 40
|
|
lda #$29 ; CPU:$C47F PRG:047F A9 29
|
|
sta $4003 ; CPU:$C481 PRG:0481 8D 03 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleButtonPress5
|
|
; Global: Handler for controller bit 5: writes an OAM tile and attribute entry for the pressed button and issues the matching APU write.
|
|
; Local: RTS once the OAM entry and APU write are done.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
HandleButtonPress5:
|
|
lda #$02 ; CPU:$C484 PRG:0484 A9 02
|
|
sta $0212,y ; CPU:$C486 PRG:0486 99 12 02
|
|
lda #$08 ; CPU:$C489 PRG:0489 A9 08
|
|
ora Zp4E,x ; CPU:$C48B PRG:048B 15 4E
|
|
sta Zp4E,x ; CPU:$C48D PRG:048D 95 4E
|
|
jsr $CAB1 ; CPU:$C48F PRG:048F 20 B1 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit10_Test
|
|
; Global: Tests controller bit 10 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit10_Test:
|
|
rol Zp40,x ; CPU:$C492 PRG:0492 36 40
|
|
bcc ButtonBit11_Test ; CPU:$C494 PRG:0494 90 24
|
|
lda #$01 ; CPU:$C496 PRG:0496 A9 01
|
|
and $4015 ; CPU:$C498 PRG:0498 2D 15 40
|
|
bne HandleButtonPress6 ; CPU:$C49B PRG:049B D0 0F
|
|
lda #$01 ; CPU:$C49D PRG:049D A9 01
|
|
sta $4015 ; CPU:$C49F PRG:049F 8D 15 40
|
|
lda #$2E ; CPU:$C4A2 PRG:04A2 A9 2E
|
|
sta $4002 ; CPU:$C4A4 PRG:04A4 8D 02 40
|
|
lda #$29 ; CPU:$C4A7 PRG:04A7 A9 29
|
|
sta $4003 ; CPU:$C4A9 PRG:04A9 8D 03 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleButtonPress6
|
|
; Global: Handler for controller bit 6: writes an OAM tile and attribute entry for the pressed button and issues the matching APU write.
|
|
; Local: RTS once the OAM entry and APU write are done.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
HandleButtonPress6:
|
|
lda #$02 ; CPU:$C4AC PRG:04AC A9 02
|
|
sta $0216,y ; CPU:$C4AE PRG:04AE 99 16 02
|
|
lda #$04 ; CPU:$C4B1 PRG:04B1 A9 04
|
|
ora Zp4E,x ; CPU:$C4B3 PRG:04B3 15 4E
|
|
sta Zp4E,x ; CPU:$C4B5 PRG:04B5 95 4E
|
|
jsr $CAB1 ; CPU:$C4B7 PRG:04B7 20 B1 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit11_Test
|
|
; Global: Tests controller bit 11 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit11_Test:
|
|
rol Zp40,x ; CPU:$C4BA PRG:04BA 36 40
|
|
bcc ButtonBit12_Test ; CPU:$C4BC PRG:04BC 90 24
|
|
lda #$01 ; CPU:$C4BE PRG:04BE A9 01
|
|
and $4015 ; CPU:$C4C0 PRG:04C0 2D 15 40
|
|
bne HandleButtonPress7 ; CPU:$C4C3 PRG:04C3 D0 0F
|
|
lda #$01 ; CPU:$C4C5 PRG:04C5 A9 01
|
|
sta $4015 ; CPU:$C4C7 PRG:04C7 8D 15 40
|
|
lda #$0D ; CPU:$C4CA PRG:04CA A9 0D
|
|
sta $4002 ; CPU:$C4CC PRG:04CC 8D 02 40
|
|
lda #$29 ; CPU:$C4CF PRG:04CF A9 29
|
|
sta $4003 ; CPU:$C4D1 PRG:04D1 8D 03 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleButtonPress7
|
|
; Global: Handler for controller bit 7: writes an OAM tile and attribute entry for the pressed button and issues the matching APU write.
|
|
; Local: RTS once the OAM entry and APU write are done.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
HandleButtonPress7:
|
|
lda #$02 ; CPU:$C4D4 PRG:04D4 A9 02
|
|
sta $021A,y ; CPU:$C4D6 PRG:04D6 99 1A 02
|
|
lda #$02 ; CPU:$C4D9 PRG:04D9 A9 02
|
|
ora Zp4E,x ; CPU:$C4DB PRG:04DB 15 4E
|
|
sta Zp4E,x ; CPU:$C4DD PRG:04DD 95 4E
|
|
jsr $CAB1 ; CPU:$C4DF PRG:04DF 20 B1 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ButtonBit12_Test
|
|
; Global: Tests controller bit 12 of the button byte by rotating it through carry, and branches to the next bit when clear.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ButtonBit12_Test:
|
|
rol Zp40,x ; CPU:$C4E2 PRG:04E2 36 40
|
|
bcc FinishButtonDispatch ; CPU:$C4E4 PRG:04E4 90 24
|
|
lda #$01 ; CPU:$C4E6 PRG:04E6 A9 01
|
|
and $4015 ; CPU:$C4E8 PRG:04E8 2D 15 40
|
|
bne HandleButtonPress8 ; CPU:$C4EB PRG:04EB D0 0F
|
|
lda #$01 ; CPU:$C4ED PRG:04ED A9 01
|
|
sta $4015 ; CPU:$C4EF PRG:04EF 8D 15 40
|
|
lda #$FE ; CPU:$C4F2 PRG:04F2 A9 FE
|
|
sta $4002 ; CPU:$C4F4 PRG:04F4 8D 02 40
|
|
lda #$28 ; CPU:$C4F7 PRG:04F7 A9 28
|
|
sta $4003 ; CPU:$C4F9 PRG:04F9 8D 03 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleButtonPress8
|
|
; Global: Handler for controller bit 8: writes an OAM tile and attribute entry for the pressed button and issues the matching APU write.
|
|
; Local: RTS once the OAM entry and APU write are done.
|
|
; Parameters: X = button index; Y = OAM offset.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF, $4015.
|
|
; -----------------------------------------------------------------------------
|
|
HandleButtonPress8:
|
|
lda #$02 ; CPU:$C4FC PRG:04FC A9 02
|
|
sta $021E,y ; CPU:$C4FE PRG:04FE 99 1E 02
|
|
lda #$01 ; CPU:$C501 PRG:0501 A9 01
|
|
ora Zp4E,x ; CPU:$C503 PRG:0503 15 4E
|
|
sta Zp4E,x ; CPU:$C505 PRG:0505 95 4E
|
|
jsr $CAB1 ; CPU:$C507 PRG:0507 20 B1 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: FinishButtonDispatch
|
|
; Global: Stores the surviving button state back and masks the bits that have been consumed before returning.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Button state updated.
|
|
; Clobbers: A, X; button state array.
|
|
; -----------------------------------------------------------------------------
|
|
FinishButtonDispatch:
|
|
pla ; CPU:$C50A PRG:050A 68
|
|
sta Zp40,x ; CPU:$C50B PRG:050B 95 40
|
|
lda #$0C ; CPU:$C50D PRG:050D A9 0C
|
|
and Zp40,x ; CPU:$C50F PRG:050F 35 40
|
|
cmp #$0C ; CPU:$C511 PRG:0511 C9 0C
|
|
beq CallPrepareButtonOam ; CPU:$C513 PRG:0513 F0 0B
|
|
lda #$03 ; CPU:$C515 PRG:0515 A9 03
|
|
and Zp40,x ; CPU:$C517 PRG:0517 35 40
|
|
cmp #$03 ; CPU:$C519 PRG:0519 C9 03
|
|
beq CallPrepareButtonOam ; CPU:$C51B PRG:051B F0 03
|
|
jmp $C523 ; CPU:$C51D PRG:051D 4C 23 C5
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CallPrepareButtonOam
|
|
; Global: Calls PrepareButtonOam and returns.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: OAM shadow primed.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
CallPrepareButtonOam:
|
|
jsr $C1EE ; CPU:$C520 PRG:0520 20 EE C1
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReturnFromPrepareButtonOam
|
|
; Global: RTS.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: None.
|
|
; -----------------------------------------------------------------------------
|
|
ReturnFromPrepareButtonOam:
|
|
rts ; CPU:$C523 PRG:0523 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate1
|
|
; Global: Marker update group 1 for MarkerVar01. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate1:
|
|
lda Zp60 ; CPU:$C524 PRG:0524 A5 60
|
|
cmp #$04 ; CPU:$C526 PRG:0526 C9 04
|
|
bmi MarkerUpdate1_High ; CPU:$C528 PRG:0528 30 3A
|
|
lda Zp60 ; CPU:$C52A PRG:052A A5 60
|
|
clc ; CPU:$C52C PRG:052C 18
|
|
sbc #$04 ; CPU:$C52D PRG:052D E9 04
|
|
sta Zp60 ; CPU:$C52F PRG:052F 85 60
|
|
lda #$F4 ; CPU:$C531 PRG:0531 A9 F4
|
|
sta $028D ; CPU:$C533 PRG:0533 8D 8D 02
|
|
lda Zp60 ; CPU:$C536 PRG:0536 A5 60
|
|
cmp #$04 ; CPU:$C538 PRG:0538 C9 04
|
|
bmi MarkerUpdate1_Mid ; CPU:$C53A PRG:053A 30 3D
|
|
lda Zp60 ; CPU:$C53C PRG:053C A5 60
|
|
clc ; CPU:$C53E PRG:053E 18
|
|
sbc #$04 ; CPU:$C53F PRG:053F E9 04
|
|
sta Zp60 ; CPU:$C541 PRG:0541 85 60
|
|
lda #$D4 ; CPU:$C543 PRG:0543 A9 D4
|
|
sta $0289 ; CPU:$C545 PRG:0545 8D 89 02
|
|
lda Zp60 ; CPU:$C548 PRG:0548 A5 60
|
|
cmp #$04 ; CPU:$C54A PRG:054A C9 04
|
|
bmi MarkerUpdate1_Low ; CPU:$C54C PRG:054C 30 3D
|
|
lda Zp60 ; CPU:$C54E PRG:054E A5 60
|
|
clc ; CPU:$C550 PRG:0550 18
|
|
sbc #$04 ; CPU:$C551 PRG:0551 E9 04
|
|
sta Zp60 ; CPU:$C553 PRG:0553 85 60
|
|
lda #$D4 ; CPU:$C555 PRG:0555 A9 D4
|
|
sta $0285 ; CPU:$C557 PRG:0557 8D 85 02
|
|
lda #$E0 ; CPU:$C55A PRG:055A A9 E0
|
|
ora Zp60 ; CPU:$C55C PRG:055C 05 60
|
|
sta $0281 ; CPU:$C55E PRG:055E 8D 81 02
|
|
jmp $C597 ; CPU:$C561 PRG:0561 4C 97 C5
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate1_High
|
|
; Global: Marker update group 1 entry for the high variant: ORs $F0 into MarkerVar01 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate1_High:
|
|
lda #$F0 ; CPU:$C564 PRG:0564 A9 F0
|
|
ora Zp60 ; CPU:$C566 PRG:0566 05 60
|
|
sta $028D ; CPU:$C568 PRG:0568 8D 8D 02
|
|
lda #$30 ; CPU:$C56B PRG:056B A9 30
|
|
sta $0289 ; CPU:$C56D PRG:056D 8D 89 02
|
|
sta $0285 ; CPU:$C570 PRG:0570 8D 85 02
|
|
sta $0281 ; CPU:$C573 PRG:0573 8D 81 02
|
|
jmp $C597 ; CPU:$C576 PRG:0576 4C 97 C5
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate1_Mid
|
|
; Global: Marker update group 1 entry for the mid variant: ORs $D0 into MarkerVar01 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate1_Mid:
|
|
lda #$D0 ; CPU:$C579 PRG:0579 A9 D0
|
|
ora Zp60 ; CPU:$C57B PRG:057B 05 60
|
|
sta $0289 ; CPU:$C57D PRG:057D 8D 89 02
|
|
lda #$30 ; CPU:$C580 PRG:0580 A9 30
|
|
sta $0285 ; CPU:$C582 PRG:0582 8D 85 02
|
|
sta $0281 ; CPU:$C585 PRG:0585 8D 81 02
|
|
jmp $C597 ; CPU:$C588 PRG:0588 4C 97 C5
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate1_Low
|
|
; Global: Marker update group 1 entry for the low variant: ORs $D0 into MarkerVar01 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate1_Low:
|
|
lda #$D0 ; CPU:$C58B PRG:058B A9 D0
|
|
ora Zp60 ; CPU:$C58D PRG:058D 05 60
|
|
sta $0285 ; CPU:$C58F PRG:058F 8D 85 02
|
|
lda #$30 ; CPU:$C592 PRG:0592 A9 30
|
|
sta $0281 ; CPU:$C594 PRG:0594 8D 81 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate2
|
|
; Global: Marker update group 2 for MarkerVar02. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate2:
|
|
lda Zp5B ; CPU:$C597 PRG:0597 A5 5B
|
|
cmp #$04 ; CPU:$C599 PRG:0599 C9 04
|
|
bmi MarkerUpdate2_High ; CPU:$C59B PRG:059B 30 3A
|
|
lda Zp5B ; CPU:$C59D PRG:059D A5 5B
|
|
clc ; CPU:$C59F PRG:059F 18
|
|
sbc #$04 ; CPU:$C5A0 PRG:05A0 E9 04
|
|
sta Zp5B ; CPU:$C5A2 PRG:05A2 85 5B
|
|
lda #$F4 ; CPU:$C5A4 PRG:05A4 A9 F4
|
|
sta $029D ; CPU:$C5A6 PRG:05A6 8D 9D 02
|
|
lda Zp5B ; CPU:$C5A9 PRG:05A9 A5 5B
|
|
cmp #$04 ; CPU:$C5AB PRG:05AB C9 04
|
|
bmi MarkerUpdate2_Mid ; CPU:$C5AD PRG:05AD 30 3D
|
|
lda Zp5B ; CPU:$C5AF PRG:05AF A5 5B
|
|
clc ; CPU:$C5B1 PRG:05B1 18
|
|
sbc #$04 ; CPU:$C5B2 PRG:05B2 E9 04
|
|
sta Zp5B ; CPU:$C5B4 PRG:05B4 85 5B
|
|
lda #$D4 ; CPU:$C5B6 PRG:05B6 A9 D4
|
|
sta $0299 ; CPU:$C5B8 PRG:05B8 8D 99 02
|
|
lda Zp5B ; CPU:$C5BB PRG:05BB A5 5B
|
|
cmp #$04 ; CPU:$C5BD PRG:05BD C9 04
|
|
bmi MarkerUpdate2_Low ; CPU:$C5BF PRG:05BF 30 3D
|
|
lda Zp5B ; CPU:$C5C1 PRG:05C1 A5 5B
|
|
clc ; CPU:$C5C3 PRG:05C3 18
|
|
sbc #$04 ; CPU:$C5C4 PRG:05C4 E9 04
|
|
sta Zp5B ; CPU:$C5C6 PRG:05C6 85 5B
|
|
lda #$D4 ; CPU:$C5C8 PRG:05C8 A9 D4
|
|
sta $0295 ; CPU:$C5CA PRG:05CA 8D 95 02
|
|
lda #$E0 ; CPU:$C5CD PRG:05CD A9 E0
|
|
ora Zp5B ; CPU:$C5CF PRG:05CF 05 5B
|
|
sta $0291 ; CPU:$C5D1 PRG:05D1 8D 91 02
|
|
jmp $C60A ; CPU:$C5D4 PRG:05D4 4C 0A C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate2_High
|
|
; Global: Marker update group 2 entry for the high variant: ORs $F0 into MarkerVar02 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate2_High:
|
|
lda #$F0 ; CPU:$C5D7 PRG:05D7 A9 F0
|
|
ora Zp5B ; CPU:$C5D9 PRG:05D9 05 5B
|
|
sta $029D ; CPU:$C5DB PRG:05DB 8D 9D 02
|
|
lda #$30 ; CPU:$C5DE PRG:05DE A9 30
|
|
sta $0299 ; CPU:$C5E0 PRG:05E0 8D 99 02
|
|
sta $0295 ; CPU:$C5E3 PRG:05E3 8D 95 02
|
|
sta $0291 ; CPU:$C5E6 PRG:05E6 8D 91 02
|
|
jmp $C60A ; CPU:$C5E9 PRG:05E9 4C 0A C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate2_Mid
|
|
; Global: Marker update group 2 entry for the mid variant: ORs $D0 into MarkerVar02 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate2_Mid:
|
|
lda #$D0 ; CPU:$C5EC PRG:05EC A9 D0
|
|
ora Zp5B ; CPU:$C5EE PRG:05EE 05 5B
|
|
sta $0299 ; CPU:$C5F0 PRG:05F0 8D 99 02
|
|
lda #$30 ; CPU:$C5F3 PRG:05F3 A9 30
|
|
sta $0295 ; CPU:$C5F5 PRG:05F5 8D 95 02
|
|
sta $0291 ; CPU:$C5F8 PRG:05F8 8D 91 02
|
|
jmp $C60A ; CPU:$C5FB PRG:05FB 4C 0A C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate2_Low
|
|
; Global: Marker update group 2 entry for the low variant: ORs $D0 into MarkerVar02 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate2_Low:
|
|
lda #$D0 ; CPU:$C5FE PRG:05FE A9 D0
|
|
ora Zp5B ; CPU:$C600 PRG:0600 05 5B
|
|
sta $0295 ; CPU:$C602 PRG:0602 8D 95 02
|
|
lda #$30 ; CPU:$C605 PRG:0605 A9 30
|
|
sta $0291 ; CPU:$C607 PRG:0607 8D 91 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate3
|
|
; Global: Marker update group 3 for MarkerVar03. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate3:
|
|
lda Zp56 ; CPU:$C60A PRG:060A A5 56
|
|
cmp #$04 ; CPU:$C60C PRG:060C C9 04
|
|
bmi MarkerUpdate3_High ; CPU:$C60E PRG:060E 30 3A
|
|
lda Zp56 ; CPU:$C610 PRG:0610 A5 56
|
|
clc ; CPU:$C612 PRG:0612 18
|
|
sbc #$04 ; CPU:$C613 PRG:0613 E9 04
|
|
sta Zp56 ; CPU:$C615 PRG:0615 85 56
|
|
lda #$F4 ; CPU:$C617 PRG:0617 A9 F4
|
|
sta $02AD ; CPU:$C619 PRG:0619 8D AD 02
|
|
lda Zp56 ; CPU:$C61C PRG:061C A5 56
|
|
cmp #$04 ; CPU:$C61E PRG:061E C9 04
|
|
bmi MarkerUpdate3_Mid ; CPU:$C620 PRG:0620 30 3D
|
|
lda Zp56 ; CPU:$C622 PRG:0622 A5 56
|
|
clc ; CPU:$C624 PRG:0624 18
|
|
sbc #$04 ; CPU:$C625 PRG:0625 E9 04
|
|
sta Zp56 ; CPU:$C627 PRG:0627 85 56
|
|
lda #$D4 ; CPU:$C629 PRG:0629 A9 D4
|
|
sta $02A9 ; CPU:$C62B PRG:062B 8D A9 02
|
|
lda Zp56 ; CPU:$C62E PRG:062E A5 56
|
|
cmp #$04 ; CPU:$C630 PRG:0630 C9 04
|
|
bmi MarkerUpdate3_Low ; CPU:$C632 PRG:0632 30 3D
|
|
lda Zp56 ; CPU:$C634 PRG:0634 A5 56
|
|
clc ; CPU:$C636 PRG:0636 18
|
|
sbc #$04 ; CPU:$C637 PRG:0637 E9 04
|
|
sta Zp56 ; CPU:$C639 PRG:0639 85 56
|
|
lda #$D4 ; CPU:$C63B PRG:063B A9 D4
|
|
sta $02A5 ; CPU:$C63D PRG:063D 8D A5 02
|
|
lda #$E0 ; CPU:$C640 PRG:0640 A9 E0
|
|
ora Zp56 ; CPU:$C642 PRG:0642 05 56
|
|
sta $02A1 ; CPU:$C644 PRG:0644 8D A1 02
|
|
jmp $C67D ; CPU:$C647 PRG:0647 4C 7D C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate3_High
|
|
; Global: Marker update group 3 entry for the high variant: ORs $F0 into MarkerVar03 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate3_High:
|
|
lda #$F0 ; CPU:$C64A PRG:064A A9 F0
|
|
ora Zp56 ; CPU:$C64C PRG:064C 05 56
|
|
sta $02AD ; CPU:$C64E PRG:064E 8D AD 02
|
|
lda #$30 ; CPU:$C651 PRG:0651 A9 30
|
|
sta $02A9 ; CPU:$C653 PRG:0653 8D A9 02
|
|
sta $02A5 ; CPU:$C656 PRG:0656 8D A5 02
|
|
sta $02A1 ; CPU:$C659 PRG:0659 8D A1 02
|
|
jmp $C67D ; CPU:$C65C PRG:065C 4C 7D C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate3_Mid
|
|
; Global: Marker update group 3 entry for the mid variant: ORs $D0 into MarkerVar03 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate3_Mid:
|
|
lda #$D0 ; CPU:$C65F PRG:065F A9 D0
|
|
ora Zp56 ; CPU:$C661 PRG:0661 05 56
|
|
sta $02A9 ; CPU:$C663 PRG:0663 8D A9 02
|
|
lda #$30 ; CPU:$C666 PRG:0666 A9 30
|
|
sta $02A5 ; CPU:$C668 PRG:0668 8D A5 02
|
|
sta $02A1 ; CPU:$C66B PRG:066B 8D A1 02
|
|
jmp $C67D ; CPU:$C66E PRG:066E 4C 7D C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate3_Low
|
|
; Global: Marker update group 3 entry for the low variant: ORs $D0 into MarkerVar03 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate3_Low:
|
|
lda #$D0 ; CPU:$C671 PRG:0671 A9 D0
|
|
ora Zp56 ; CPU:$C673 PRG:0673 05 56
|
|
sta $02A5 ; CPU:$C675 PRG:0675 8D A5 02
|
|
lda #$30 ; CPU:$C678 PRG:0678 A9 30
|
|
sta $02A1 ; CPU:$C67A PRG:067A 8D A1 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate4
|
|
; Global: Marker update group 4 for MarkerVar04. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate4:
|
|
lda Zp61 ; CPU:$C67D PRG:067D A5 61
|
|
cmp #$04 ; CPU:$C67F PRG:067F C9 04
|
|
bmi MarkerUpdate4_High ; CPU:$C681 PRG:0681 30 3A
|
|
lda Zp61 ; CPU:$C683 PRG:0683 A5 61
|
|
clc ; CPU:$C685 PRG:0685 18
|
|
sbc #$04 ; CPU:$C686 PRG:0686 E9 04
|
|
sta Zp61 ; CPU:$C688 PRG:0688 85 61
|
|
lda #$F4 ; CPU:$C68A PRG:068A A9 F4
|
|
sta $02BD ; CPU:$C68C PRG:068C 8D BD 02
|
|
lda Zp61 ; CPU:$C68F PRG:068F A5 61
|
|
cmp #$04 ; CPU:$C691 PRG:0691 C9 04
|
|
bmi MarkerUpdate4_Mid ; CPU:$C693 PRG:0693 30 3D
|
|
lda Zp61 ; CPU:$C695 PRG:0695 A5 61
|
|
clc ; CPU:$C697 PRG:0697 18
|
|
sbc #$04 ; CPU:$C698 PRG:0698 E9 04
|
|
sta Zp61 ; CPU:$C69A PRG:069A 85 61
|
|
lda #$D4 ; CPU:$C69C PRG:069C A9 D4
|
|
sta $02B9 ; CPU:$C69E PRG:069E 8D B9 02
|
|
lda Zp61 ; CPU:$C6A1 PRG:06A1 A5 61
|
|
cmp #$04 ; CPU:$C6A3 PRG:06A3 C9 04
|
|
bmi MarkerUpdate4_Low ; CPU:$C6A5 PRG:06A5 30 3D
|
|
lda Zp61 ; CPU:$C6A7 PRG:06A7 A5 61
|
|
clc ; CPU:$C6A9 PRG:06A9 18
|
|
sbc #$04 ; CPU:$C6AA PRG:06AA E9 04
|
|
sta Zp61 ; CPU:$C6AC PRG:06AC 85 61
|
|
lda #$D4 ; CPU:$C6AE PRG:06AE A9 D4
|
|
sta $02B5 ; CPU:$C6B0 PRG:06B0 8D B5 02
|
|
lda #$E0 ; CPU:$C6B3 PRG:06B3 A9 E0
|
|
ora Zp61 ; CPU:$C6B5 PRG:06B5 05 61
|
|
sta $02B1 ; CPU:$C6B7 PRG:06B7 8D B1 02
|
|
jmp $C6F0 ; CPU:$C6BA PRG:06BA 4C F0 C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate4_High
|
|
; Global: Marker update group 4 entry for the high variant: ORs $F0 into MarkerVar04 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate4_High:
|
|
lda #$F0 ; CPU:$C6BD PRG:06BD A9 F0
|
|
ora Zp61 ; CPU:$C6BF PRG:06BF 05 61
|
|
sta $02BD ; CPU:$C6C1 PRG:06C1 8D BD 02
|
|
lda #$30 ; CPU:$C6C4 PRG:06C4 A9 30
|
|
sta $02B9 ; CPU:$C6C6 PRG:06C6 8D B9 02
|
|
sta $02B5 ; CPU:$C6C9 PRG:06C9 8D B5 02
|
|
sta $02B1 ; CPU:$C6CC PRG:06CC 8D B1 02
|
|
jmp $C6F0 ; CPU:$C6CF PRG:06CF 4C F0 C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate4_Mid
|
|
; Global: Marker update group 4 entry for the mid variant: ORs $D0 into MarkerVar04 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate4_Mid:
|
|
lda #$D0 ; CPU:$C6D2 PRG:06D2 A9 D0
|
|
ora Zp61 ; CPU:$C6D4 PRG:06D4 05 61
|
|
sta $02B9 ; CPU:$C6D6 PRG:06D6 8D B9 02
|
|
lda #$30 ; CPU:$C6D9 PRG:06D9 A9 30
|
|
sta $02B5 ; CPU:$C6DB PRG:06DB 8D B5 02
|
|
sta $02B1 ; CPU:$C6DE PRG:06DE 8D B1 02
|
|
jmp $C6F0 ; CPU:$C6E1 PRG:06E1 4C F0 C6
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate4_Low
|
|
; Global: Marker update group 4 entry for the low variant: ORs $D0 into MarkerVar04 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate4_Low:
|
|
lda #$D0 ; CPU:$C6E4 PRG:06E4 A9 D0
|
|
ora Zp61 ; CPU:$C6E6 PRG:06E6 05 61
|
|
sta $02B5 ; CPU:$C6E8 PRG:06E8 8D B5 02
|
|
lda #$30 ; CPU:$C6EB PRG:06EB A9 30
|
|
sta $02B1 ; CPU:$C6ED PRG:06ED 8D B1 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate5
|
|
; Global: Marker update group 5 for MarkerVar05. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate5:
|
|
lda Zp5C ; CPU:$C6F0 PRG:06F0 A5 5C
|
|
cmp #$04 ; CPU:$C6F2 PRG:06F2 C9 04
|
|
bmi MarkerUpdate5_High ; CPU:$C6F4 PRG:06F4 30 3A
|
|
lda Zp5C ; CPU:$C6F6 PRG:06F6 A5 5C
|
|
clc ; CPU:$C6F8 PRG:06F8 18
|
|
sbc #$04 ; CPU:$C6F9 PRG:06F9 E9 04
|
|
sta Zp5C ; CPU:$C6FB PRG:06FB 85 5C
|
|
lda #$F4 ; CPU:$C6FD PRG:06FD A9 F4
|
|
sta $02CD ; CPU:$C6FF PRG:06FF 8D CD 02
|
|
lda Zp5C ; CPU:$C702 PRG:0702 A5 5C
|
|
cmp #$04 ; CPU:$C704 PRG:0704 C9 04
|
|
bmi MarkerUpdate5_Mid ; CPU:$C706 PRG:0706 30 3D
|
|
lda Zp5C ; CPU:$C708 PRG:0708 A5 5C
|
|
clc ; CPU:$C70A PRG:070A 18
|
|
sbc #$04 ; CPU:$C70B PRG:070B E9 04
|
|
sta Zp5C ; CPU:$C70D PRG:070D 85 5C
|
|
lda #$D4 ; CPU:$C70F PRG:070F A9 D4
|
|
sta $02C9 ; CPU:$C711 PRG:0711 8D C9 02
|
|
lda Zp5C ; CPU:$C714 PRG:0714 A5 5C
|
|
cmp #$04 ; CPU:$C716 PRG:0716 C9 04
|
|
bmi MarkerUpdate5_Low ; CPU:$C718 PRG:0718 30 3D
|
|
lda Zp5C ; CPU:$C71A PRG:071A A5 5C
|
|
clc ; CPU:$C71C PRG:071C 18
|
|
sbc #$04 ; CPU:$C71D PRG:071D E9 04
|
|
sta Zp5C ; CPU:$C71F PRG:071F 85 5C
|
|
lda #$D4 ; CPU:$C721 PRG:0721 A9 D4
|
|
sta $02C5 ; CPU:$C723 PRG:0723 8D C5 02
|
|
lda #$E0 ; CPU:$C726 PRG:0726 A9 E0
|
|
ora Zp5C ; CPU:$C728 PRG:0728 05 5C
|
|
sta $02C1 ; CPU:$C72A PRG:072A 8D C1 02
|
|
jmp $C763 ; CPU:$C72D PRG:072D 4C 63 C7
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate5_High
|
|
; Global: Marker update group 5 entry for the high variant: ORs $F0 into MarkerVar05 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate5_High:
|
|
lda #$F0 ; CPU:$C730 PRG:0730 A9 F0
|
|
ora Zp5C ; CPU:$C732 PRG:0732 05 5C
|
|
sta $02CD ; CPU:$C734 PRG:0734 8D CD 02
|
|
lda #$30 ; CPU:$C737 PRG:0737 A9 30
|
|
sta $02C9 ; CPU:$C739 PRG:0739 8D C9 02
|
|
sta $02C5 ; CPU:$C73C PRG:073C 8D C5 02
|
|
sta $02C1 ; CPU:$C73F PRG:073F 8D C1 02
|
|
jmp $C763 ; CPU:$C742 PRG:0742 4C 63 C7
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate5_Mid
|
|
; Global: Marker update group 5 entry for the mid variant: ORs $D0 into MarkerVar05 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate5_Mid:
|
|
lda #$D0 ; CPU:$C745 PRG:0745 A9 D0
|
|
ora Zp5C ; CPU:$C747 PRG:0747 05 5C
|
|
sta $02C9 ; CPU:$C749 PRG:0749 8D C9 02
|
|
lda #$30 ; CPU:$C74C PRG:074C A9 30
|
|
sta $02C5 ; CPU:$C74E PRG:074E 8D C5 02
|
|
sta $02C1 ; CPU:$C751 PRG:0751 8D C1 02
|
|
jmp $C763 ; CPU:$C754 PRG:0754 4C 63 C7
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate5_Low
|
|
; Global: Marker update group 5 entry for the low variant: ORs $D0 into MarkerVar05 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate5_Low:
|
|
lda #$D0 ; CPU:$C757 PRG:0757 A9 D0
|
|
ora Zp5C ; CPU:$C759 PRG:0759 05 5C
|
|
sta $02C5 ; CPU:$C75B PRG:075B 8D C5 02
|
|
lda #$30 ; CPU:$C75E PRG:075E A9 30
|
|
sta $02C1 ; CPU:$C760 PRG:0760 8D C1 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate6
|
|
; Global: Marker update group 6 for MarkerVar06. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate6:
|
|
lda Zp57 ; CPU:$C763 PRG:0763 A5 57
|
|
cmp #$04 ; CPU:$C765 PRG:0765 C9 04
|
|
bmi MarkerUpdate6_High ; CPU:$C767 PRG:0767 30 3A
|
|
lda Zp57 ; CPU:$C769 PRG:0769 A5 57
|
|
clc ; CPU:$C76B PRG:076B 18
|
|
sbc #$04 ; CPU:$C76C PRG:076C E9 04
|
|
sta Zp57 ; CPU:$C76E PRG:076E 85 57
|
|
lda #$F4 ; CPU:$C770 PRG:0770 A9 F4
|
|
sta $02DD ; CPU:$C772 PRG:0772 8D DD 02
|
|
lda Zp57 ; CPU:$C775 PRG:0775 A5 57
|
|
cmp #$04 ; CPU:$C777 PRG:0777 C9 04
|
|
bmi MarkerUpdate6_Mid ; CPU:$C779 PRG:0779 30 3D
|
|
lda Zp57 ; CPU:$C77B PRG:077B A5 57
|
|
clc ; CPU:$C77D PRG:077D 18
|
|
sbc #$04 ; CPU:$C77E PRG:077E E9 04
|
|
sta Zp57 ; CPU:$C780 PRG:0780 85 57
|
|
lda #$D4 ; CPU:$C782 PRG:0782 A9 D4
|
|
sta $02D9 ; CPU:$C784 PRG:0784 8D D9 02
|
|
lda Zp57 ; CPU:$C787 PRG:0787 A5 57
|
|
cmp #$04 ; CPU:$C789 PRG:0789 C9 04
|
|
bmi MarkerUpdate6_Low ; CPU:$C78B PRG:078B 30 3D
|
|
lda Zp57 ; CPU:$C78D PRG:078D A5 57
|
|
clc ; CPU:$C78F PRG:078F 18
|
|
sbc #$04 ; CPU:$C790 PRG:0790 E9 04
|
|
sta Zp57 ; CPU:$C792 PRG:0792 85 57
|
|
lda #$D4 ; CPU:$C794 PRG:0794 A9 D4
|
|
sta $02D5 ; CPU:$C796 PRG:0796 8D D5 02
|
|
lda #$E0 ; CPU:$C799 PRG:0799 A9 E0
|
|
ora Zp57 ; CPU:$C79B PRG:079B 05 57
|
|
sta $02D1 ; CPU:$C79D PRG:079D 8D D1 02
|
|
jmp $C7D6 ; CPU:$C7A0 PRG:07A0 4C D6 C7
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate6_High
|
|
; Global: Marker update group 6 entry for the high variant: ORs $F0 into MarkerVar06 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate6_High:
|
|
lda #$F0 ; CPU:$C7A3 PRG:07A3 A9 F0
|
|
ora Zp57 ; CPU:$C7A5 PRG:07A5 05 57
|
|
sta $02DD ; CPU:$C7A7 PRG:07A7 8D DD 02
|
|
lda #$30 ; CPU:$C7AA PRG:07AA A9 30
|
|
sta $02D9 ; CPU:$C7AC PRG:07AC 8D D9 02
|
|
sta $02D5 ; CPU:$C7AF PRG:07AF 8D D5 02
|
|
sta $02D1 ; CPU:$C7B2 PRG:07B2 8D D1 02
|
|
jmp $C7D6 ; CPU:$C7B5 PRG:07B5 4C D6 C7
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate6_Mid
|
|
; Global: Marker update group 6 entry for the mid variant: ORs $D0 into MarkerVar06 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate6_Mid:
|
|
lda #$D0 ; CPU:$C7B8 PRG:07B8 A9 D0
|
|
ora Zp57 ; CPU:$C7BA PRG:07BA 05 57
|
|
sta $02D9 ; CPU:$C7BC PRG:07BC 8D D9 02
|
|
lda #$30 ; CPU:$C7BF PRG:07BF A9 30
|
|
sta $02D5 ; CPU:$C7C1 PRG:07C1 8D D5 02
|
|
sta $02D1 ; CPU:$C7C4 PRG:07C4 8D D1 02
|
|
jmp $C7D6 ; CPU:$C7C7 PRG:07C7 4C D6 C7
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate6_Low
|
|
; Global: Marker update group 6 entry for the low variant: ORs $D0 into MarkerVar06 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate6_Low:
|
|
lda #$D0 ; CPU:$C7CA PRG:07CA A9 D0
|
|
ora Zp57 ; CPU:$C7CC PRG:07CC 05 57
|
|
sta $02D5 ; CPU:$C7CE PRG:07CE 8D D5 02
|
|
lda #$30 ; CPU:$C7D1 PRG:07D1 A9 30
|
|
sta $02D1 ; CPU:$C7D3 PRG:07D3 8D D1 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate6_Return
|
|
; Global: End of marker update group 6. RTS.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate6_Return:
|
|
rts ; CPU:$C7D6 PRG:07D6 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate7
|
|
; Global: Marker update group 7 for MarkerVar07. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate7:
|
|
lda Zp63 ; CPU:$C7D7 PRG:07D7 A5 63
|
|
cmp #$04 ; CPU:$C7D9 PRG:07D9 C9 04
|
|
bmi MarkerUpdate7_High ; CPU:$C7DB PRG:07DB 30 3A
|
|
lda Zp63 ; CPU:$C7DD PRG:07DD A5 63
|
|
clc ; CPU:$C7DF PRG:07DF 18
|
|
sbc #$04 ; CPU:$C7E0 PRG:07E0 E9 04
|
|
sta Zp63 ; CPU:$C7E2 PRG:07E2 85 63
|
|
lda #$F4 ; CPU:$C7E4 PRG:07E4 A9 F4
|
|
sta $031D ; CPU:$C7E6 PRG:07E6 8D 1D 03
|
|
lda Zp63 ; CPU:$C7E9 PRG:07E9 A5 63
|
|
cmp #$04 ; CPU:$C7EB PRG:07EB C9 04
|
|
bmi MarkerUpdate7_Mid ; CPU:$C7ED PRG:07ED 30 3D
|
|
lda Zp63 ; CPU:$C7EF PRG:07EF A5 63
|
|
clc ; CPU:$C7F1 PRG:07F1 18
|
|
sbc #$04 ; CPU:$C7F2 PRG:07F2 E9 04
|
|
sta Zp63 ; CPU:$C7F4 PRG:07F4 85 63
|
|
lda #$D4 ; CPU:$C7F6 PRG:07F6 A9 D4
|
|
sta $0315 ; CPU:$C7F8 PRG:07F8 8D 15 03
|
|
lda Zp63 ; CPU:$C7FB PRG:07FB A5 63
|
|
cmp #$04 ; CPU:$C7FD PRG:07FD C9 04
|
|
bmi MarkerUpdate7_Low ; CPU:$C7FF PRG:07FF 30 3D
|
|
lda Zp63 ; CPU:$C801 PRG:0801 A5 63
|
|
clc ; CPU:$C803 PRG:0803 18
|
|
sbc #$04 ; CPU:$C804 PRG:0804 E9 04
|
|
sta Zp63 ; CPU:$C806 PRG:0806 85 63
|
|
lda #$D4 ; CPU:$C808 PRG:0808 A9 D4
|
|
sta $030D ; CPU:$C80A PRG:080A 8D 0D 03
|
|
lda #$E0 ; CPU:$C80D PRG:080D A9 E0
|
|
ora Zp63 ; CPU:$C80F PRG:080F 05 63
|
|
sta $0305 ; CPU:$C811 PRG:0811 8D 05 03
|
|
jmp $C84A ; CPU:$C814 PRG:0814 4C 4A C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate7_High
|
|
; Global: Marker update group 7 entry for the high variant: ORs $F0 into MarkerVar07 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate7_High:
|
|
lda #$F0 ; CPU:$C817 PRG:0817 A9 F0
|
|
ora Zp63 ; CPU:$C819 PRG:0819 05 63
|
|
sta $031D ; CPU:$C81B PRG:081B 8D 1D 03
|
|
lda #$30 ; CPU:$C81E PRG:081E A9 30
|
|
sta $0315 ; CPU:$C820 PRG:0820 8D 15 03
|
|
sta $030D ; CPU:$C823 PRG:0823 8D 0D 03
|
|
sta $0305 ; CPU:$C826 PRG:0826 8D 05 03
|
|
jmp $C84A ; CPU:$C829 PRG:0829 4C 4A C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate7_Mid
|
|
; Global: Marker update group 7 entry for the mid variant: ORs $D0 into MarkerVar07 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate7_Mid:
|
|
lda #$D0 ; CPU:$C82C PRG:082C A9 D0
|
|
ora Zp63 ; CPU:$C82E PRG:082E 05 63
|
|
sta $0315 ; CPU:$C830 PRG:0830 8D 15 03
|
|
lda #$30 ; CPU:$C833 PRG:0833 A9 30
|
|
sta $030D ; CPU:$C835 PRG:0835 8D 0D 03
|
|
sta $0305 ; CPU:$C838 PRG:0838 8D 05 03
|
|
jmp $C84A ; CPU:$C83B PRG:083B 4C 4A C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate7_Low
|
|
; Global: Marker update group 7 entry for the low variant: ORs $D0 into MarkerVar07 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate7_Low:
|
|
lda #$D0 ; CPU:$C83E PRG:083E A9 D0
|
|
ora Zp63 ; CPU:$C840 PRG:0840 05 63
|
|
sta $030D ; CPU:$C842 PRG:0842 8D 0D 03
|
|
lda #$30 ; CPU:$C845 PRG:0845 A9 30
|
|
sta $0305 ; CPU:$C847 PRG:0847 8D 05 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate8
|
|
; Global: Marker update group 8 for MarkerVar08. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate8:
|
|
lda Zp5E ; CPU:$C84A PRG:084A A5 5E
|
|
cmp #$04 ; CPU:$C84C PRG:084C C9 04
|
|
bmi MarkerUpdate8_High ; CPU:$C84E PRG:084E 30 3A
|
|
lda Zp5E ; CPU:$C850 PRG:0850 A5 5E
|
|
clc ; CPU:$C852 PRG:0852 18
|
|
sbc #$04 ; CPU:$C853 PRG:0853 E9 04
|
|
sta Zp5E ; CPU:$C855 PRG:0855 85 5E
|
|
lda #$F4 ; CPU:$C857 PRG:0857 A9 F4
|
|
sta $031F ; CPU:$C859 PRG:0859 8D 1F 03
|
|
lda Zp5E ; CPU:$C85C PRG:085C A5 5E
|
|
cmp #$04 ; CPU:$C85E PRG:085E C9 04
|
|
bmi MarkerUpdate8_Mid ; CPU:$C860 PRG:0860 30 3D
|
|
lda Zp5E ; CPU:$C862 PRG:0862 A5 5E
|
|
clc ; CPU:$C864 PRG:0864 18
|
|
sbc #$04 ; CPU:$C865 PRG:0865 E9 04
|
|
sta Zp5E ; CPU:$C867 PRG:0867 85 5E
|
|
lda #$D4 ; CPU:$C869 PRG:0869 A9 D4
|
|
sta $0317 ; CPU:$C86B PRG:086B 8D 17 03
|
|
lda Zp5E ; CPU:$C86E PRG:086E A5 5E
|
|
cmp #$04 ; CPU:$C870 PRG:0870 C9 04
|
|
bmi MarkerUpdate8_Low ; CPU:$C872 PRG:0872 30 3D
|
|
lda Zp5E ; CPU:$C874 PRG:0874 A5 5E
|
|
clc ; CPU:$C876 PRG:0876 18
|
|
sbc #$04 ; CPU:$C877 PRG:0877 E9 04
|
|
sta Zp5E ; CPU:$C879 PRG:0879 85 5E
|
|
lda #$D4 ; CPU:$C87B PRG:087B A9 D4
|
|
sta $030F ; CPU:$C87D PRG:087D 8D 0F 03
|
|
lda #$E0 ; CPU:$C880 PRG:0880 A9 E0
|
|
ora Zp5E ; CPU:$C882 PRG:0882 05 5E
|
|
sta $0307 ; CPU:$C884 PRG:0884 8D 07 03
|
|
jmp $C8BD ; CPU:$C887 PRG:0887 4C BD C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate8_High
|
|
; Global: Marker update group 8 entry for the high variant: ORs $F0 into MarkerVar08 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate8_High:
|
|
lda #$F0 ; CPU:$C88A PRG:088A A9 F0
|
|
ora Zp5E ; CPU:$C88C PRG:088C 05 5E
|
|
sta $031F ; CPU:$C88E PRG:088E 8D 1F 03
|
|
lda #$30 ; CPU:$C891 PRG:0891 A9 30
|
|
sta $0317 ; CPU:$C893 PRG:0893 8D 17 03
|
|
sta $030F ; CPU:$C896 PRG:0896 8D 0F 03
|
|
sta $0307 ; CPU:$C899 PRG:0899 8D 07 03
|
|
jmp $C8BD ; CPU:$C89C PRG:089C 4C BD C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate8_Mid
|
|
; Global: Marker update group 8 entry for the mid variant: ORs $D0 into MarkerVar08 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate8_Mid:
|
|
lda #$D0 ; CPU:$C89F PRG:089F A9 D0
|
|
ora Zp5E ; CPU:$C8A1 PRG:08A1 05 5E
|
|
sta $0317 ; CPU:$C8A3 PRG:08A3 8D 17 03
|
|
lda #$30 ; CPU:$C8A6 PRG:08A6 A9 30
|
|
sta $030F ; CPU:$C8A8 PRG:08A8 8D 0F 03
|
|
sta $0307 ; CPU:$C8AB PRG:08AB 8D 07 03
|
|
jmp $C8BD ; CPU:$C8AE PRG:08AE 4C BD C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate8_Low
|
|
; Global: Marker update group 8 entry for the low variant: ORs $D0 into MarkerVar08 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate8_Low:
|
|
lda #$D0 ; CPU:$C8B1 PRG:08B1 A9 D0
|
|
ora Zp5E ; CPU:$C8B3 PRG:08B3 05 5E
|
|
sta $030F ; CPU:$C8B5 PRG:08B5 8D 0F 03
|
|
lda #$30 ; CPU:$C8B8 PRG:08B8 A9 30
|
|
sta $0307 ; CPU:$C8BA PRG:08BA 8D 07 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate9
|
|
; Global: Marker update group 9 for MarkerVar09. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate9:
|
|
lda Zp59 ; CPU:$C8BD PRG:08BD A5 59
|
|
cmp #$04 ; CPU:$C8BF PRG:08BF C9 04
|
|
bmi MarkerUpdate9_High ; CPU:$C8C1 PRG:08C1 30 3A
|
|
lda Zp59 ; CPU:$C8C3 PRG:08C3 A5 59
|
|
clc ; CPU:$C8C5 PRG:08C5 18
|
|
sbc #$04 ; CPU:$C8C6 PRG:08C6 E9 04
|
|
sta Zp59 ; CPU:$C8C8 PRG:08C8 85 59
|
|
lda #$F4 ; CPU:$C8CA PRG:08CA A9 F4
|
|
sta $0321 ; CPU:$C8CC PRG:08CC 8D 21 03
|
|
lda Zp59 ; CPU:$C8CF PRG:08CF A5 59
|
|
cmp #$04 ; CPU:$C8D1 PRG:08D1 C9 04
|
|
bmi MarkerUpdate9_Mid ; CPU:$C8D3 PRG:08D3 30 3D
|
|
lda Zp59 ; CPU:$C8D5 PRG:08D5 A5 59
|
|
clc ; CPU:$C8D7 PRG:08D7 18
|
|
sbc #$04 ; CPU:$C8D8 PRG:08D8 E9 04
|
|
sta Zp59 ; CPU:$C8DA PRG:08DA 85 59
|
|
lda #$D4 ; CPU:$C8DC PRG:08DC A9 D4
|
|
sta $0319 ; CPU:$C8DE PRG:08DE 8D 19 03
|
|
lda Zp59 ; CPU:$C8E1 PRG:08E1 A5 59
|
|
cmp #$04 ; CPU:$C8E3 PRG:08E3 C9 04
|
|
bmi MarkerUpdate9_Low ; CPU:$C8E5 PRG:08E5 30 3D
|
|
lda Zp59 ; CPU:$C8E7 PRG:08E7 A5 59
|
|
clc ; CPU:$C8E9 PRG:08E9 18
|
|
sbc #$04 ; CPU:$C8EA PRG:08EA E9 04
|
|
sta Zp59 ; CPU:$C8EC PRG:08EC 85 59
|
|
lda #$D4 ; CPU:$C8EE PRG:08EE A9 D4
|
|
sta $0311 ; CPU:$C8F0 PRG:08F0 8D 11 03
|
|
lda #$E0 ; CPU:$C8F3 PRG:08F3 A9 E0
|
|
ora Zp59 ; CPU:$C8F5 PRG:08F5 05 59
|
|
sta $0309 ; CPU:$C8F7 PRG:08F7 8D 09 03
|
|
jmp $C930 ; CPU:$C8FA PRG:08FA 4C 30 C9
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate9_High
|
|
; Global: Marker update group 9 entry for the high variant: ORs $F0 into MarkerVar09 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate9_High:
|
|
lda #$F0 ; CPU:$C8FD PRG:08FD A9 F0
|
|
ora Zp59 ; CPU:$C8FF PRG:08FF 05 59
|
|
sta $0321 ; CPU:$C901 PRG:0901 8D 21 03
|
|
lda #$30 ; CPU:$C904 PRG:0904 A9 30
|
|
sta $0319 ; CPU:$C906 PRG:0906 8D 19 03
|
|
sta $0311 ; CPU:$C909 PRG:0909 8D 11 03
|
|
sta $0309 ; CPU:$C90C PRG:090C 8D 09 03
|
|
jmp $C930 ; CPU:$C90F PRG:090F 4C 30 C9
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate9_Mid
|
|
; Global: Marker update group 9 entry for the mid variant: ORs $D0 into MarkerVar09 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate9_Mid:
|
|
lda #$D0 ; CPU:$C912 PRG:0912 A9 D0
|
|
ora Zp59 ; CPU:$C914 PRG:0914 05 59
|
|
sta $0319 ; CPU:$C916 PRG:0916 8D 19 03
|
|
lda #$30 ; CPU:$C919 PRG:0919 A9 30
|
|
sta $0311 ; CPU:$C91B PRG:091B 8D 11 03
|
|
sta $0309 ; CPU:$C91E PRG:091E 8D 09 03
|
|
jmp $C930 ; CPU:$C921 PRG:0921 4C 30 C9
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate9_Low
|
|
; Global: Marker update group 9 entry for the low variant: ORs $D0 into MarkerVar09 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate9_Low:
|
|
lda #$D0 ; CPU:$C924 PRG:0924 A9 D0
|
|
ora Zp59 ; CPU:$C926 PRG:0926 05 59
|
|
sta $0311 ; CPU:$C928 PRG:0928 8D 11 03
|
|
lda #$30 ; CPU:$C92B PRG:092B A9 30
|
|
sta $0309 ; CPU:$C92D PRG:092D 8D 09 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate10
|
|
; Global: Marker update group 10 for MarkerVar10. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate10:
|
|
lda Zp64 ; CPU:$C930 PRG:0930 A5 64
|
|
cmp #$04 ; CPU:$C932 PRG:0932 C9 04
|
|
bmi MarkerUpdate10_High ; CPU:$C934 PRG:0934 30 3A
|
|
lda Zp64 ; CPU:$C936 PRG:0936 A5 64
|
|
clc ; CPU:$C938 PRG:0938 18
|
|
sbc #$04 ; CPU:$C939 PRG:0939 E9 04
|
|
sta Zp64 ; CPU:$C93B PRG:093B 85 64
|
|
lda #$F4 ; CPU:$C93D PRG:093D A9 F4
|
|
sta $034D ; CPU:$C93F PRG:093F 8D 4D 03
|
|
lda Zp64 ; CPU:$C942 PRG:0942 A5 64
|
|
cmp #$04 ; CPU:$C944 PRG:0944 C9 04
|
|
bmi MarkerUpdate10_Mid ; CPU:$C946 PRG:0946 30 3D
|
|
lda Zp64 ; CPU:$C948 PRG:0948 A5 64
|
|
clc ; CPU:$C94A PRG:094A 18
|
|
sbc #$04 ; CPU:$C94B PRG:094B E9 04
|
|
sta Zp64 ; CPU:$C94D PRG:094D 85 64
|
|
lda #$D4 ; CPU:$C94F PRG:094F A9 D4
|
|
sta $0345 ; CPU:$C951 PRG:0951 8D 45 03
|
|
lda Zp64 ; CPU:$C954 PRG:0954 A5 64
|
|
cmp #$04 ; CPU:$C956 PRG:0956 C9 04
|
|
bmi MarkerUpdate10_Low ; CPU:$C958 PRG:0958 30 3D
|
|
lda Zp64 ; CPU:$C95A PRG:095A A5 64
|
|
clc ; CPU:$C95C PRG:095C 18
|
|
sbc #$04 ; CPU:$C95D PRG:095D E9 04
|
|
sta Zp64 ; CPU:$C95F PRG:095F 85 64
|
|
lda #$D4 ; CPU:$C961 PRG:0961 A9 D4
|
|
sta $033D ; CPU:$C963 PRG:0963 8D 3D 03
|
|
lda #$E0 ; CPU:$C966 PRG:0966 A9 E0
|
|
ora Zp64 ; CPU:$C968 PRG:0968 05 64
|
|
sta $0335 ; CPU:$C96A PRG:096A 8D 35 03
|
|
jmp $C9A3 ; CPU:$C96D PRG:096D 4C A3 C9
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate10_High
|
|
; Global: Marker update group 10 entry for the high variant: ORs $F0 into MarkerVar10 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate10_High:
|
|
lda #$F0 ; CPU:$C970 PRG:0970 A9 F0
|
|
ora Zp64 ; CPU:$C972 PRG:0972 05 64
|
|
sta $034D ; CPU:$C974 PRG:0974 8D 4D 03
|
|
lda #$30 ; CPU:$C977 PRG:0977 A9 30
|
|
sta $0345 ; CPU:$C979 PRG:0979 8D 45 03
|
|
sta $033D ; CPU:$C97C PRG:097C 8D 3D 03
|
|
sta $0335 ; CPU:$C97F PRG:097F 8D 35 03
|
|
jmp $C9A3 ; CPU:$C982 PRG:0982 4C A3 C9
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate10_Mid
|
|
; Global: Marker update group 10 entry for the mid variant: ORs $D0 into MarkerVar10 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate10_Mid:
|
|
lda #$D0 ; CPU:$C985 PRG:0985 A9 D0
|
|
ora Zp64 ; CPU:$C987 PRG:0987 05 64
|
|
sta $0345 ; CPU:$C989 PRG:0989 8D 45 03
|
|
lda #$30 ; CPU:$C98C PRG:098C A9 30
|
|
sta $033D ; CPU:$C98E PRG:098E 8D 3D 03
|
|
sta $0335 ; CPU:$C991 PRG:0991 8D 35 03
|
|
jmp $C9A3 ; CPU:$C994 PRG:0994 4C A3 C9
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate10_Low
|
|
; Global: Marker update group 10 entry for the low variant: ORs $D0 into MarkerVar10 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate10_Low:
|
|
lda #$D0 ; CPU:$C997 PRG:0997 A9 D0
|
|
ora Zp64 ; CPU:$C999 PRG:0999 05 64
|
|
sta $033D ; CPU:$C99B PRG:099B 8D 3D 03
|
|
lda #$30 ; CPU:$C99E PRG:099E A9 30
|
|
sta $0335 ; CPU:$C9A0 PRG:09A0 8D 35 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate11
|
|
; Global: Marker update group 11 for MarkerVar11. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate11:
|
|
lda Zp5F ; CPU:$C9A3 PRG:09A3 A5 5F
|
|
cmp #$04 ; CPU:$C9A5 PRG:09A5 C9 04
|
|
bmi MarkerUpdate11_High ; CPU:$C9A7 PRG:09A7 30 3A
|
|
lda Zp5F ; CPU:$C9A9 PRG:09A9 A5 5F
|
|
clc ; CPU:$C9AB PRG:09AB 18
|
|
sbc #$04 ; CPU:$C9AC PRG:09AC E9 04
|
|
sta Zp5F ; CPU:$C9AE PRG:09AE 85 5F
|
|
lda #$F4 ; CPU:$C9B0 PRG:09B0 A9 F4
|
|
sta $034F ; CPU:$C9B2 PRG:09B2 8D 4F 03
|
|
lda Zp5F ; CPU:$C9B5 PRG:09B5 A5 5F
|
|
cmp #$04 ; CPU:$C9B7 PRG:09B7 C9 04
|
|
bmi MarkerUpdate11_Mid ; CPU:$C9B9 PRG:09B9 30 3D
|
|
lda Zp5F ; CPU:$C9BB PRG:09BB A5 5F
|
|
clc ; CPU:$C9BD PRG:09BD 18
|
|
sbc #$04 ; CPU:$C9BE PRG:09BE E9 04
|
|
sta Zp5F ; CPU:$C9C0 PRG:09C0 85 5F
|
|
lda #$D4 ; CPU:$C9C2 PRG:09C2 A9 D4
|
|
sta $0347 ; CPU:$C9C4 PRG:09C4 8D 47 03
|
|
lda Zp5F ; CPU:$C9C7 PRG:09C7 A5 5F
|
|
cmp #$04 ; CPU:$C9C9 PRG:09C9 C9 04
|
|
bmi MarkerUpdate11_Low ; CPU:$C9CB PRG:09CB 30 3D
|
|
lda Zp5F ; CPU:$C9CD PRG:09CD A5 5F
|
|
clc ; CPU:$C9CF PRG:09CF 18
|
|
sbc #$04 ; CPU:$C9D0 PRG:09D0 E9 04
|
|
sta Zp5F ; CPU:$C9D2 PRG:09D2 85 5F
|
|
lda #$D4 ; CPU:$C9D4 PRG:09D4 A9 D4
|
|
sta $033F ; CPU:$C9D6 PRG:09D6 8D 3F 03
|
|
lda #$E0 ; CPU:$C9D9 PRG:09D9 A9 E0
|
|
ora Zp5F ; CPU:$C9DB PRG:09DB 05 5F
|
|
sta $0337 ; CPU:$C9DD PRG:09DD 8D 37 03
|
|
jmp $CA16 ; CPU:$C9E0 PRG:09E0 4C 16 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate11_High
|
|
; Global: Marker update group 11 entry for the high variant: ORs $F0 into MarkerVar11 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate11_High:
|
|
lda #$F0 ; CPU:$C9E3 PRG:09E3 A9 F0
|
|
ora Zp5F ; CPU:$C9E5 PRG:09E5 05 5F
|
|
sta $034F ; CPU:$C9E7 PRG:09E7 8D 4F 03
|
|
lda #$30 ; CPU:$C9EA PRG:09EA A9 30
|
|
sta $0347 ; CPU:$C9EC PRG:09EC 8D 47 03
|
|
sta $033F ; CPU:$C9EF PRG:09EF 8D 3F 03
|
|
sta $0337 ; CPU:$C9F2 PRG:09F2 8D 37 03
|
|
jmp $CA16 ; CPU:$C9F5 PRG:09F5 4C 16 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate11_Mid
|
|
; Global: Marker update group 11 entry for the mid variant: ORs $D0 into MarkerVar11 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate11_Mid:
|
|
lda #$D0 ; CPU:$C9F8 PRG:09F8 A9 D0
|
|
ora Zp5F ; CPU:$C9FA PRG:09FA 05 5F
|
|
sta $0347 ; CPU:$C9FC PRG:09FC 8D 47 03
|
|
lda #$30 ; CPU:$C9FF PRG:09FF A9 30
|
|
sta $033F ; CPU:$CA01 PRG:0A01 8D 3F 03
|
|
sta $0337 ; CPU:$CA04 PRG:0A04 8D 37 03
|
|
jmp $CA16 ; CPU:$CA07 PRG:0A07 4C 16 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate11_Low
|
|
; Global: Marker update group 11 entry for the low variant: ORs $D0 into MarkerVar11 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate11_Low:
|
|
lda #$D0 ; CPU:$CA0A PRG:0A0A A9 D0
|
|
ora Zp5F ; CPU:$CA0C PRG:0A0C 05 5F
|
|
sta $033F ; CPU:$CA0E PRG:0A0E 8D 3F 03
|
|
lda #$30 ; CPU:$CA11 PRG:0A11 A9 30
|
|
sta $0337 ; CPU:$CA13 PRG:0A13 8D 37 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate12
|
|
; Global: Marker update group 12 for MarkerVar12. Tests the variable against $04 and, when it is a button state, drives the matching OAM indicator slot.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate12:
|
|
lda Zp5A ; CPU:$CA16 PRG:0A16 A5 5A
|
|
cmp #$04 ; CPU:$CA18 PRG:0A18 C9 04
|
|
bmi MarkerUpdate12_High ; CPU:$CA1A PRG:0A1A 30 3A
|
|
lda Zp5A ; CPU:$CA1C PRG:0A1C A5 5A
|
|
clc ; CPU:$CA1E PRG:0A1E 18
|
|
sbc #$04 ; CPU:$CA1F PRG:0A1F E9 04
|
|
sta Zp5A ; CPU:$CA21 PRG:0A21 85 5A
|
|
lda #$F4 ; CPU:$CA23 PRG:0A23 A9 F4
|
|
sta $0351 ; CPU:$CA25 PRG:0A25 8D 51 03
|
|
lda Zp5A ; CPU:$CA28 PRG:0A28 A5 5A
|
|
cmp #$04 ; CPU:$CA2A PRG:0A2A C9 04
|
|
bmi MarkerUpdate12_Mid ; CPU:$CA2C PRG:0A2C 30 3D
|
|
lda Zp5A ; CPU:$CA2E PRG:0A2E A5 5A
|
|
clc ; CPU:$CA30 PRG:0A30 18
|
|
sbc #$04 ; CPU:$CA31 PRG:0A31 E9 04
|
|
sta Zp5A ; CPU:$CA33 PRG:0A33 85 5A
|
|
lda #$D4 ; CPU:$CA35 PRG:0A35 A9 D4
|
|
sta $0349 ; CPU:$CA37 PRG:0A37 8D 49 03
|
|
lda Zp5A ; CPU:$CA3A PRG:0A3A A5 5A
|
|
cmp #$04 ; CPU:$CA3C PRG:0A3C C9 04
|
|
bmi MarkerUpdate12_Low ; CPU:$CA3E PRG:0A3E 30 3D
|
|
lda Zp5A ; CPU:$CA40 PRG:0A40 A5 5A
|
|
clc ; CPU:$CA42 PRG:0A42 18
|
|
sbc #$04 ; CPU:$CA43 PRG:0A43 E9 04
|
|
sta Zp5A ; CPU:$CA45 PRG:0A45 85 5A
|
|
lda #$D4 ; CPU:$CA47 PRG:0A47 A9 D4
|
|
sta $0341 ; CPU:$CA49 PRG:0A49 8D 41 03
|
|
lda #$E0 ; CPU:$CA4C PRG:0A4C A9 E0
|
|
ora Zp5A ; CPU:$CA4E PRG:0A4E 05 5A
|
|
sta $0339 ; CPU:$CA50 PRG:0A50 8D 39 03
|
|
jmp $CA89 ; CPU:$CA53 PRG:0A53 4C 89 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate12_High
|
|
; Global: Marker update group 12 entry for the high variant: ORs $F0 into MarkerVar12 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate12_High:
|
|
lda #$F0 ; CPU:$CA56 PRG:0A56 A9 F0
|
|
ora Zp5A ; CPU:$CA58 PRG:0A58 05 5A
|
|
sta $0351 ; CPU:$CA5A PRG:0A5A 8D 51 03
|
|
lda #$30 ; CPU:$CA5D PRG:0A5D A9 30
|
|
sta $0349 ; CPU:$CA5F PRG:0A5F 8D 49 03
|
|
sta $0341 ; CPU:$CA62 PRG:0A62 8D 41 03
|
|
sta $0339 ; CPU:$CA65 PRG:0A65 8D 39 03
|
|
jmp $CA89 ; CPU:$CA68 PRG:0A68 4C 89 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate12_Mid
|
|
; Global: Marker update group 12 entry for the mid variant: ORs $D0 into MarkerVar12 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate12_Mid:
|
|
lda #$D0 ; CPU:$CA6B PRG:0A6B A9 D0
|
|
ora Zp5A ; CPU:$CA6D PRG:0A6D 05 5A
|
|
sta $0349 ; CPU:$CA6F PRG:0A6F 8D 49 03
|
|
lda #$30 ; CPU:$CA72 PRG:0A72 A9 30
|
|
sta $0341 ; CPU:$CA74 PRG:0A74 8D 41 03
|
|
sta $0339 ; CPU:$CA77 PRG:0A77 8D 39 03
|
|
jmp $CA89 ; CPU:$CA7A PRG:0A7A 4C 89 CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate12_Low
|
|
; Global: Marker update group 12 entry for the low variant: ORs $D0 into MarkerVar12 and writes the result to an OAM Y-coordinate slot, so a different indicator sprite lights.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate12_Low:
|
|
lda #$D0 ; CPU:$CA7D PRG:0A7D A9 D0
|
|
ora Zp5A ; CPU:$CA7F PRG:0A7F 05 5A
|
|
sta $0341 ; CPU:$CA81 PRG:0A81 8D 41 03
|
|
lda #$30 ; CPU:$CA84 PRG:0A84 A9 30
|
|
sta $0339 ; CPU:$CA86 PRG:0A86 8D 39 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MarkerUpdate12_Return
|
|
; Global: End of marker update group 12. RTS.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
MarkerUpdate12_Return:
|
|
rts ; CPU:$CA89 PRG:0A89 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ResetButtonMarkerState
|
|
; Global: Clears every per-button marker variable and primes ButtonHoldCounter with $FF. This is the reset for a whole marker update pass, not a single marker.
|
|
; Local: Falls through to its caller.
|
|
; Parameters: None.
|
|
; Returns: All marker state cleared.
|
|
; Clobbers: A; MarkerVar01-MarkerVar12, ButtonHoldCounter.
|
|
; -----------------------------------------------------------------------------
|
|
ResetButtonMarkerState:
|
|
lda #$FF ; CPU:$CA8A PRG:0A8A A9 FF
|
|
sta Zp6A ; CPU:$CA8C PRG:0A8C 85 6A
|
|
lda #$00 ; CPU:$CA8E PRG:0A8E A9 00
|
|
sta Zp60 ; CPU:$CA90 PRG:0A90 85 60
|
|
sta Zp5B ; CPU:$CA92 PRG:0A92 85 5B
|
|
sta Zp56 ; CPU:$CA94 PRG:0A94 85 56
|
|
sta Zp61 ; CPU:$CA96 PRG:0A96 85 61
|
|
sta Zp5C ; CPU:$CA98 PRG:0A98 85 5C
|
|
sta Zp57 ; CPU:$CA9A PRG:0A9A 85 57
|
|
sta Zp63 ; CPU:$CA9C PRG:0A9C 85 63
|
|
sta Zp5E ; CPU:$CA9E PRG:0A9E 85 5E
|
|
sta Zp59 ; CPU:$CAA0 PRG:0AA0 85 59
|
|
sta Zp64 ; CPU:$CAA2 PRG:0AA2 85 64
|
|
sta Zp5F ; CPU:$CAA4 PRG:0AA4 85 5F
|
|
sta Zp5A ; CPU:$CAA6 PRG:0AA6 85 5A
|
|
sta Zp65 ; CPU:$CAA8 PRG:0AA8 85 65
|
|
sta Zp66 ; CPU:$CAAA PRG:0AAA 85 66
|
|
sta Zp68 ; CPU:$CAAC PRG:0AAC 85 68
|
|
sta Zp69 ; CPU:$CAAE PRG:0AAE 85 69
|
|
rts ; CPU:$CAB0 PRG:0AB0 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ResetButtonTimers
|
|
; Global: Clears both bytes of the frame counter at the start of a marker update pass.
|
|
; Local: Falls through to the caller.
|
|
; Parameters: None.
|
|
; Returns: Counter cleared.
|
|
; Clobbers: A; FrameCounterLo/Hi.
|
|
; -----------------------------------------------------------------------------
|
|
ResetButtonTimers:
|
|
lda #$00 ; CPU:$CAB1 PRG:0AB1 A9 00
|
|
sta Zp53 ; CPU:$CAB3 PRG:0AB3 85 53
|
|
sta Zp54 ; CPU:$CAB5 PRG:0AB5 85 54
|
|
rts ; CPU:$CAB7 PRG:0AB7 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit0
|
|
; Global: Button-scan entry for bit 0: rotates one bit out of the button state array and records whether it was set.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit0:
|
|
rol Zp4E,x ; CPU:$CAB8 PRG:0AB8 36 4E
|
|
bcc ShiftButtonBit1 ; CPU:$CABA PRG:0ABA 90 05
|
|
lda #$00 ; CPU:$CABC PRG:0ABC A9 00
|
|
sta $0202,y ; CPU:$CABE PRG:0ABE 99 02 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit1
|
|
; Global: Button-scan entry for bit 1: rotates one bit out of the button state array and records whether it was set.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit1:
|
|
rol Zp4E,x ; CPU:$CAC1 PRG:0AC1 36 4E
|
|
bcc ShiftButtonBit2 ; CPU:$CAC3 PRG:0AC3 90 05
|
|
lda #$00 ; CPU:$CAC5 PRG:0AC5 A9 00
|
|
sta $0206,y ; CPU:$CAC7 PRG:0AC7 99 06 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit2
|
|
; Global: Button-scan entry for bit 2: rotates one bit out of the button state array and records whether it was set.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit2:
|
|
rol Zp4E,x ; CPU:$CACA PRG:0ACA 36 4E
|
|
bcc ShiftButtonBit3 ; CPU:$CACC PRG:0ACC 90 05
|
|
lda #$00 ; CPU:$CACE PRG:0ACE A9 00
|
|
sta $020E,y ; CPU:$CAD0 PRG:0AD0 99 0E 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit3
|
|
; Global: Button-scan entry for bit 3: rotates one bit out of the button state array and records whether it was set.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit3:
|
|
rol Zp4E,x ; CPU:$CAD3 PRG:0AD3 36 4E
|
|
bcc ShiftButtonBit4 ; CPU:$CAD5 PRG:0AD5 90 05
|
|
lda #$00 ; CPU:$CAD7 PRG:0AD7 A9 00
|
|
sta $020A,y ; CPU:$CAD9 PRG:0AD9 99 0A 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit4
|
|
; Global: Button-scan entry for bit 4: rotates one bit out of the button state array and records whether it was set.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit4:
|
|
rol Zp4E,x ; CPU:$CADC PRG:0ADC 36 4E
|
|
bcc ShiftButtonBit5 ; CPU:$CADE PRG:0ADE 90 05
|
|
lda #$00 ; CPU:$CAE0 PRG:0AE0 A9 00
|
|
sta $0212,y ; CPU:$CAE2 PRG:0AE2 99 12 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit5
|
|
; Global: Button-scan entry for bit 5: rotates one bit out of the button state array and records whether it was set.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit5:
|
|
rol Zp4E,x ; CPU:$CAE5 PRG:0AE5 36 4E
|
|
bcc ShiftButtonBit6 ; CPU:$CAE7 PRG:0AE7 90 05
|
|
lda #$00 ; CPU:$CAE9 PRG:0AE9 A9 00
|
|
sta $0216,y ; CPU:$CAEB PRG:0AEB 99 16 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit6
|
|
; Global: Button-scan entry for bit 6: rotates one bit out of the button state array and records whether it was set.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit6:
|
|
rol Zp4E,x ; CPU:$CAEE PRG:0AEE 36 4E
|
|
bcc ShiftButtonBit7 ; CPU:$CAF0 PRG:0AF0 90 05
|
|
lda #$00 ; CPU:$CAF2 PRG:0AF2 A9 00
|
|
sta $021A,y ; CPU:$CAF4 PRG:0AF4 99 1A 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit7
|
|
; Global: Button-scan entry for bit 7: rotates one bit out of the button state array and records whether it was set.
|
|
; Local: Branches onward, or RTS where the family ends.
|
|
; Parameters: X = index where the family is indexed.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit7:
|
|
rol Zp4E,x ; CPU:$CAF7 PRG:0AF7 36 4E
|
|
bcc ShiftButtonBit8Done ; CPU:$CAF9 PRG:0AF9 90 05
|
|
lda #$00 ; CPU:$CAFB PRG:0AFB A9 00
|
|
sta $021E,y ; CPU:$CAFD PRG:0AFD 99 1E 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ShiftButtonBit8Done
|
|
; Global: Final entry of the eight-step button scan.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ShiftButtonBit8Done:
|
|
rol Zp4E,x ; CPU:$CB00 PRG:0B00 36 4E
|
|
rts ; CPU:$CB02 PRG:0B02 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: InitTestScreen70
|
|
; Global: Sets up the mode-70 screen: writes an $EE pattern into $6000, clears RAM and primes the OAM from its own ROM table.
|
|
; Local: Falls into the mode-70 frame loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $6000, $0000-$05FF, $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
InitTestScreen70:
|
|
jsr $CD2F ; CPU:$CB03 PRG:0B03 20 2F CD
|
|
ldx #$00 ; CPU:$CB06 PRG:0B06 A2 00
|
|
lda #$EE ; CPU:$CB08 PRG:0B08 A9 EE
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WriteRamPattern70Loop
|
|
; Global: Mode-70 copy of the $6000 pattern writer.
|
|
; Local: Returns to its caller once X reaches six.
|
|
; Parameters: X = index; A = pattern byte.
|
|
; Returns: X = six.
|
|
; Clobbers: A, X; $6000-$6005.
|
|
; -----------------------------------------------------------------------------
|
|
WriteRamPattern70Loop:
|
|
sta $6000,x ; CPU:$CB0A PRG:0B0A 9D 00 60
|
|
inx ; CPU:$CB0D PRG:0B0D E8
|
|
cpx #$06 ; CPU:$CB0E PRG:0B0E E0 06
|
|
bne WriteRamPattern70Loop ; CPU:$CB10 PRG:0B10 D0 F8
|
|
lda #$00 ; CPU:$CB12 PRG:0B12 A9 00
|
|
ldx #$00 ; CPU:$CB14 PRG:0B14 A2 00
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ClearRamPass4Loop
|
|
; Global: Fourth RAM-clearing pass, used by mode 70.
|
|
; Local: Returns to its caller when X wraps.
|
|
; Parameters: X = page offset; A = fill value.
|
|
; Returns: X wrapped to $00.
|
|
; Clobbers: A, X; $0000-$05FF.
|
|
; -----------------------------------------------------------------------------
|
|
ClearRamPass4Loop:
|
|
sta Zp00,x ; CPU:$CB16 PRG:0B16 95 00
|
|
sta $0100,x ; CPU:$CB18 PRG:0B18 9D 00 01
|
|
lda #$F4 ; CPU:$CB1B PRG:0B1B A9 F4
|
|
sta $0200,x ; CPU:$CB1D PRG:0B1D 9D 00 02
|
|
lda #$00 ; CPU:$CB20 PRG:0B20 A9 00
|
|
sta $0300,x ; CPU:$CB22 PRG:0B22 9D 00 03
|
|
sta $0400,x ; CPU:$CB25 PRG:0B25 9D 00 04
|
|
sta $0500,x ; CPU:$CB28 PRG:0B28 9D 00 05
|
|
sta $0600,x ; CPU:$CB2B PRG:0B2B 9D 00 06
|
|
inx ; CPU:$CB2E PRG:0B2E E8
|
|
bne ClearRamPass4Loop ; CPU:$CB2F PRG:0B2F D0 E5
|
|
lda #$10 ; CPU:$CB31 PRG:0B31 A9 10
|
|
sta $2000 ; CPU:$CB33 PRG:0B33 8D 00 20
|
|
sta ZpEF ; CPU:$CB36 PRG:0B36 85 EF
|
|
lda #$00 ; CPU:$CB38 PRG:0B38 A9 00
|
|
sta $2001 ; CPU:$CB3A PRG:0B3A 8D 01 20
|
|
sta ZpEE ; CPU:$CB3D PRG:0B3D 85 EE
|
|
lda #$20 ; CPU:$CB3F PRG:0B3F A9 20
|
|
ldx #$24 ; CPU:$CB41 PRG:0B41 A2 24
|
|
ldy #$00 ; CPU:$CB43 PRG:0B43 A0 00
|
|
jsr $CDEE ; CPU:$CB45 PRG:0B45 20 EE CD
|
|
jsr $CD3F ; CPU:$CB48 PRG:0B48 20 3F CD
|
|
asl ZpCF ; CPU:$CB4B PRG:0B4B 06 CF
|
|
jsr $CE3C ; CPU:$CB4D PRG:0B4D 20 3C CE
|
|
jsr $CD3F ; CPU:$CB50 PRG:0B50 20 3F CD
|
|
.byte $63, $D0 ; CPU:$CB53 PRG:0B53 63 D0 -- rra (ZpD0,x) (undocumented; ca65 cannot encode)
|
|
jsr $CE3C ; CPU:$CB55 PRG:0B55 20 3C CE
|
|
jsr $C174 ; CPU:$CB58 PRG:0B58 20 74 C1
|
|
ldx #$DF ; CPU:$CB5B PRG:0B5B A2 DF
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CopyOamFromTable70
|
|
; Global: Mode-70 copy of the ROM sprite table upload.
|
|
; Local: Falls through when X reaches zero.
|
|
; Parameters: X = index.
|
|
; Returns: X wrapped to $00.
|
|
; Clobbers: A, X; $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
CopyOamFromTable70:
|
|
lda $D5C4,x ; CPU:$CB5D PRG:0B5D BD C4 D5
|
|
sta $0200,x ; CPU:$CB60 PRG:0B60 9D 00 02
|
|
dex ; CPU:$CB63 PRG:0B63 CA
|
|
bne CopyOamFromTable70 ; CPU:$CB64 PRG:0B64 D0 F7
|
|
lda $D5C4,x ; CPU:$CB66 PRG:0B66 BD C4 D5
|
|
sta $0200,x ; CPU:$CB69 PRG:0B69 9D 00 02
|
|
lda #$FF ; CPU:$CB6C PRG:0B6C A9 FF
|
|
sta Zp6A ; CPU:$CB6E PRG:0B6E 85 6A
|
|
lda #$00 ; CPU:$CB70 PRG:0B70 A9 00
|
|
sta Zp4E ; CPU:$CB72 PRG:0B72 85 4E
|
|
sta Zp4F ; CPU:$CB74 PRG:0B74 85 4F
|
|
sta Zp51 ; CPU:$CB76 PRG:0B76 85 51
|
|
sta Zp52 ; CPU:$CB78 PRG:0B78 85 52
|
|
sta Zp54 ; CPU:$CB7A PRG:0B7A 85 54
|
|
sta Zp53 ; CPU:$CB7C PRG:0B7C 85 53
|
|
sta Zp60 ; CPU:$CB7E PRG:0B7E 85 60
|
|
sta Zp5B ; CPU:$CB80 PRG:0B80 85 5B
|
|
sta Zp56 ; CPU:$CB82 PRG:0B82 85 56
|
|
sta Zp61 ; CPU:$CB84 PRG:0B84 85 61
|
|
sta Zp5C ; CPU:$CB86 PRG:0B86 85 5C
|
|
sta Zp57 ; CPU:$CB88 PRG:0B88 85 57
|
|
sta Zp65 ; CPU:$CB8A PRG:0B8A 85 65
|
|
sta Zp66 ; CPU:$CB8C PRG:0B8C 85 66
|
|
sta Zp68 ; CPU:$CB8E PRG:0B8E 85 68
|
|
sta Zp69 ; CPU:$CB90 PRG:0B90 85 69
|
|
lda #$BF ; CPU:$CB92 PRG:0B92 A9 BF
|
|
sta $4000 ; CPU:$CB94 PRG:0B94 8D 00 40
|
|
jsr $CD39 ; CPU:$CB97 PRG:0B97 20 39 CD
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: MainLoopTestMode70
|
|
; Global: Frame loop for mode 70: waits for vblank, samples the controller through the alternate path, and advances the hold counter.
|
|
; Local: Loops forever, one iteration per frame.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; ButtonHoldCounter.
|
|
; -----------------------------------------------------------------------------
|
|
MainLoopTestMode70:
|
|
jsr $CCE2 ; CPU:$CB9A PRG:0B9A 20 E2 CC
|
|
jsr $CBF8 ; CPU:$CB9D PRG:0B9D 20 F8 CB
|
|
inc Zp6A ; CPU:$CBA0 PRG:0BA0 E6 6A
|
|
lda #$0F ; CPU:$CBA2 PRG:0BA2 A9 0F
|
|
cmp Zp6A ; CPU:$CBA4 PRG:0BA4 C5 6A
|
|
beq UpdateMarkersAndTimers70 ; CPU:$CBA6 PRG:0BA6 F0 03
|
|
jmp $CBB1 ; CPU:$CBA8 PRG:0BA8 4C B1 CB
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: UpdateMarkersAndTimers70
|
|
; Global: Refreshes the button markers and the hold timers for mode 70.
|
|
; Local: Returns to the mode-70 frame loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
UpdateMarkersAndTimers70:
|
|
jsr $C524 ; CPU:$CBAB PRG:0BAB 20 24 C5
|
|
jsr $CA8A ; CPU:$CBAE PRG:0BAE 20 8A CA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckButtonsTestMode70
|
|
; Global: Tests the controller byte for any button held in mode 70.
|
|
; Local: Branches to UpdateOamTestMode70 when one is.
|
|
; Parameters: None.
|
|
; Returns: Z flag reflects the test.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
CheckButtonsTestMode70:
|
|
lda #$00 ; CPU:$CBB1 PRG:0BB1 A9 00
|
|
cmp Zp40 ; CPU:$CBB3 PRG:0BB3 C5 40
|
|
bne UpdateOamTestMode70 ; CPU:$CBB5 PRG:0BB5 D0 09
|
|
cmp Zp41 ; CPU:$CBB7 PRG:0BB7 C5 41
|
|
bne UpdateOamTestMode70 ; CPU:$CBB9 PRG:0BB9 D0 05
|
|
lda #$00 ; CPU:$CBBB PRG:0BBB A9 00
|
|
sta $4015 ; CPU:$CBBD PRG:0BBD 8D 15 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: UpdateOamTestMode70
|
|
; Global: Updates the OAM entries for mode 70 from the current button state.
|
|
; Local: Returns to the mode-70 frame loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $0200-$02FF.
|
|
; -----------------------------------------------------------------------------
|
|
UpdateOamTestMode70:
|
|
ldy #$00 ; CPU:$CBC0 PRG:0BC0 A0 00
|
|
ldx #$00 ; CPU:$CBC2 PRG:0BC2 A2 00
|
|
jsr $CC11 ; CPU:$CBC4 PRG:0BC4 20 11 CC
|
|
jsr $C361 ; CPU:$CBC7 PRG:0BC7 20 61 C3
|
|
ldy #$20 ; CPU:$CBCA PRG:0BCA A0 20
|
|
inx ; CPU:$CBCC PRG:0BCC E8
|
|
jsr $CC11 ; CPU:$CBCD PRG:0BCD 20 11 CC
|
|
jsr $C361 ; CPU:$CBD0 PRG:0BD0 20 61 C3
|
|
lda #$FF ; CPU:$CBD3 PRG:0BD3 A9 FF
|
|
cmp Zp4E ; CPU:$CBD5 PRG:0BD5 C5 4E
|
|
bne IncrementFrameCounter70 ; CPU:$CBD7 PRG:0BD7 D0 07
|
|
cmp Zp4F ; CPU:$CBD9 PRG:0BD9 C5 4F
|
|
bne IncrementFrameCounter70 ; CPU:$CBDB PRG:0BDB D0 03
|
|
jmp $C1A0 ; CPU:$CBDD PRG:0BDD 4C A0 C1
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: IncrementFrameCounter70
|
|
; Global: Mode-70 copy of the 16-bit frame counter increment.
|
|
; Local: Falls through to CheckFrameCounterLimit70.
|
|
; Parameters: None.
|
|
; Returns: Counter advanced.
|
|
; Clobbers: FrameCounterLo/Hi.
|
|
; -----------------------------------------------------------------------------
|
|
IncrementFrameCounter70:
|
|
inc Zp54 ; CPU:$CBE0 PRG:0BE0 E6 54
|
|
bne CheckFrameCounterLimit70 ; CPU:$CBE2 PRG:0BE2 D0 02
|
|
inc Zp53 ; CPU:$CBE4 PRG:0BE4 E6 53
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckFrameCounterLimit70
|
|
; Global: Mode-70 copy of the frame-counter timeout test.
|
|
; Local: Branches to ContinueTestMode70 or ExitToInit70.
|
|
; Parameters: None.
|
|
; Returns: Z flag reflects the comparison.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
CheckFrameCounterLimit70:
|
|
lda #$00 ; CPU:$CBE6 PRG:0BE6 A9 00
|
|
cmp Zp54 ; CPU:$CBE8 PRG:0BE8 C5 54
|
|
bne ContinueTestMode70 ; CPU:$CBEA PRG:0BEA D0 06
|
|
lda #$38 ; CPU:$CBEC PRG:0BEC A9 38
|
|
cmp Zp53 ; CPU:$CBEE PRG:0BEE C5 53
|
|
beq ExitToInit70 ; CPU:$CBF0 PRG:0BF0 F0 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ContinueTestMode70
|
|
; Global: Jumps back to the top of the mode-70 frame loop.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: None.
|
|
; -----------------------------------------------------------------------------
|
|
ContinueTestMode70:
|
|
jmp $CB9A ; CPU:$CBF2 PRG:0BF2 4C 9A CB
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ExitToInit70
|
|
; Global: Jumps back to InitTestScreen from mode 70.
|
|
; Local: Jumps; does not return.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: None.
|
|
; -----------------------------------------------------------------------------
|
|
ExitToInit70:
|
|
jmp $C055 ; CPU:$CBF5 PRG:0BF5 4C 55 C0
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: LatchControllerStrobe
|
|
; Global: Strobes the controller port: writes $01 to $4016 to latch, then $00 to release, which is the standard NES pad handshake.
|
|
; Local: Falls into the eight-bit read loop.
|
|
; Parameters: None.
|
|
; Returns: Controller shift register latched.
|
|
; Clobbers: A, X; $4016.
|
|
; -----------------------------------------------------------------------------
|
|
LatchControllerStrobe:
|
|
ldx #$01 ; CPU:$CBF8 PRG:0BF8 A2 01
|
|
stx $4016 ; CPU:$CBFA PRG:0BFA 8E 16 40
|
|
dex ; CPU:$CBFD PRG:0BFD CA
|
|
stx $4016 ; CPU:$CBFE PRG:0BFE 8E 16 40
|
|
inx ; CPU:$CC01 PRG:0C01 E8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReadControllerBitsInit
|
|
; Global: Sets the loop counter to eight reads before collecting the controller byte.
|
|
; Local: Falls into ReadControllerBitsLoop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ReadControllerBitsInit:
|
|
ldy #$08 ; CPU:$CC02 PRG:0C02 A0 08
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReadControllerBitsLoop
|
|
; Global: Reads $4016 eight times, shifting each bit into the button array with `lsr a / rol Zp40,x` so A arrives in bit 0.
|
|
; Local: Loops Y down from eight, then returns.
|
|
; Parameters: Y = remaining reads; X = button index.
|
|
; Returns: Eight bits collected.
|
|
; Clobbers: A, X, Y; P1Buttons.
|
|
; -----------------------------------------------------------------------------
|
|
ReadControllerBitsLoop:
|
|
lda $4016,x ; CPU:$CC04 PRG:0C04 BD 16 40
|
|
lsr a ; CPU:$CC07 PRG:0C07 4A
|
|
rol Zp40,x ; CPU:$CC08 PRG:0C08 36 40
|
|
dey ; CPU:$CC0A PRG:0C0A 88
|
|
bne ReadControllerBitsLoop ; CPU:$CC0B PRG:0C0B D0 F7
|
|
dex ; CPU:$CC0D PRG:0C0D CA
|
|
beq ReadControllerBitsInit ; CPU:$CC0E PRG:0C0E F0 F2
|
|
rts ; CPU:$CC10 PRG:0C10 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReadControllerBitSingle
|
|
; Global: Reads a single controller bit and branches on it, used where only one input matters.
|
|
; Local: Branches on the bit; both paths return to the caller.
|
|
; Parameters: None.
|
|
; Returns: Carry holds the bit.
|
|
; Clobbers: A, carry; $4016.
|
|
; -----------------------------------------------------------------------------
|
|
ReadControllerBitSingle:
|
|
lda $4016,x ; CPU:$CC11 PRG:0C11 BD 16 40
|
|
lsr a ; CPU:$CC14 PRG:0C14 4A
|
|
bcc WriteOamFromButtonState ; CPU:$CC15 PRG:0C15 90 01
|
|
rts ; CPU:$CC17 PRG:0C17 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WriteOamFromButtonState
|
|
; Global: Writes tile index $03 to the tile byte of the four button-state sprite entries at $0202/$0206/$020A/$020E, so the on-screen buttons light up.
|
|
; Local: Falls through to the attribute writes that follow.
|
|
; Parameters: Y = OAM offset stride.
|
|
; Returns: Nothing.
|
|
; Clobbers: A; $0202, $0206, $020A, $020E.
|
|
; -----------------------------------------------------------------------------
|
|
WriteOamFromButtonState:
|
|
lda #$03 ; CPU:$CC18 PRG:0C18 A9 03
|
|
sta $0202,y ; CPU:$CC1A PRG:0C1A 99 02 02
|
|
sta $0206,y ; CPU:$CC1D PRG:0C1D 99 06 02
|
|
sta $020A,y ; CPU:$CC20 PRG:0C20 99 0A 02
|
|
sta $020E,y ; CPU:$CC23 PRG:0C23 99 0E 02
|
|
sta $0212,y ; CPU:$CC26 PRG:0C26 99 12 02
|
|
sta $0216,y ; CPU:$CC29 PRG:0C29 99 16 02
|
|
sta $021A,y ; CPU:$CC2C PRG:0C2C 99 1A 02
|
|
sta $021E,y ; CPU:$CC2F PRG:0C2F 99 1E 02
|
|
lda #$00 ; CPU:$CC32 PRG:0C32 A9 00
|
|
sta Zp40,x ; CPU:$CC34 PRG:0C34 95 40
|
|
sta Zp56,x ; CPU:$CC36 PRG:0C36 95 56
|
|
sta Zp5B,x ; CPU:$CC38 PRG:0C38 95 5B
|
|
sta Zp60,x ; CPU:$CC3A PRG:0C3A 95 60
|
|
sta Zp65,x ; CPU:$CC3C PRG:0C3C 95 65
|
|
sta Zp4E,x ; CPU:$CC3E PRG:0C3E 95 4E
|
|
txa ; CPU:$CC40 PRG:0C40 8A
|
|
pha ; CPU:$CC41 PRG:0C41 48
|
|
ldx #$1F ; CPU:$CC42 PRG:0C42 A2 1F
|
|
lda #$F4 ; CPU:$CC44 PRG:0C44 A9 F4
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CopyOamShadowLoop
|
|
; Global: Descending store into the OAM shadow at $02E0, one byte per X value, then restores the caller's X from the stack.
|
|
; Local: Falls through when X goes negative; RTS to the caller.
|
|
; Parameters: X = descending index; A = byte to store.
|
|
; Returns: X restored from the stack.
|
|
; Clobbers: A, X; $02E0-$02FF; stack via pha/pla.
|
|
; -----------------------------------------------------------------------------
|
|
CopyOamShadowLoop:
|
|
sta $02E0,x ; CPU:$CC46 PRG:0C46 9D E0 02
|
|
dex ; CPU:$CC49 PRG:0C49 CA
|
|
bpl CopyOamShadowLoop ; CPU:$CC4A PRG:0C4A 10 FA
|
|
pla ; CPU:$CC4C PRG:0C4C 68
|
|
tax ; CPU:$CC4D PRG:0C4D AA
|
|
rts ; CPU:$CC4E PRG:0C4E 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: LatchControllerStrobeAlt
|
|
; Global: Second strobe sequence, used by the alternate read paths. Identical protocol to LatchControllerStrobe.
|
|
; Local: Falls into its read loop.
|
|
; Parameters: None.
|
|
; Returns: Controller shift register latched.
|
|
; Clobbers: A, X; $4016.
|
|
; -----------------------------------------------------------------------------
|
|
LatchControllerStrobeAlt:
|
|
ldx #$01 ; CPU:$CC4F PRG:0C4F A2 01
|
|
stx $4016 ; CPU:$CC51 PRG:0C51 8E 16 40
|
|
dex ; CPU:$CC54 PRG:0C54 CA
|
|
stx $4016 ; CPU:$CC55 PRG:0C55 8E 16 40
|
|
inx ; CPU:$CC58 PRG:0C58 E8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: PollExpansionPortInit
|
|
; Global: Prepares the expansion-port probe.
|
|
; Local: Falls into PollExpansionPortLoop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, Y.
|
|
; -----------------------------------------------------------------------------
|
|
PollExpansionPortInit:
|
|
ldy #$08 ; CPU:$CC59 PRG:0C59 A0 08
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: PollExpansionPortLoop
|
|
; Global: Reads the expansion port and tests bits 0-1 against $01. On this cartridge nothing consumes the result, so the branch is always the same way; the read is present but inert.
|
|
; Local: Loops eight times, then returns.
|
|
; Parameters: Y = remaining reads.
|
|
; Returns: Nothing consumed.
|
|
; Clobbers: A, Y; $4017.
|
|
; -----------------------------------------------------------------------------
|
|
PollExpansionPortLoop:
|
|
lda $4016,x ; CPU:$CC5B PRG:0C5B BD 16 40
|
|
and #$03 ; CPU:$CC5E PRG:0C5E 29 03
|
|
cmp #$01 ; CPU:$CC60 PRG:0C60 C9 01
|
|
rol Zp40,x ; CPU:$CC62 PRG:0C62 36 40
|
|
dey ; CPU:$CC64 PRG:0C64 88
|
|
bne PollExpansionPortLoop ; CPU:$CC65 PRG:0C65 D0 F4
|
|
dex ; CPU:$CC67 PRG:0C67 CA
|
|
beq PollExpansionPortInit ; CPU:$CC68 PRG:0C68 F0 EF
|
|
ldx #$01 ; CPU:$CC6A PRG:0C6A A2 01
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReadControllerBitsAltInit
|
|
; Global: Sets the loop counter for the alternate controller read path.
|
|
; Local: Falls into ReadControllerBitsAltLoop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ReadControllerBitsAltInit:
|
|
ldy #$08 ; CPU:$CC6C PRG:0C6C A0 08
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReadControllerBitsAltLoop
|
|
; Global: Alternate eight-bit read, shifting into the second button array at $47.
|
|
; Local: Loops Y down from eight, then returns.
|
|
; Parameters: Y = remaining reads.
|
|
; Returns: Eight bits collected.
|
|
; Clobbers: A, X, Y; P1ButtonsAlt.
|
|
; -----------------------------------------------------------------------------
|
|
ReadControllerBitsAltLoop:
|
|
lda $4016,x ; CPU:$CC6E PRG:0C6E BD 16 40
|
|
lsr a ; CPU:$CC71 PRG:0C71 4A
|
|
rol Zp47,x ; CPU:$CC72 PRG:0C72 36 47
|
|
lsr a ; CPU:$CC74 PRG:0C74 4A
|
|
rol Zp45,x ; CPU:$CC75 PRG:0C75 36 45
|
|
dey ; CPU:$CC77 PRG:0C77 88
|
|
bne ReadControllerBitsAltLoop ; CPU:$CC78 PRG:0C78 D0 F4
|
|
dex ; CPU:$CC7A PRG:0C7A CA
|
|
beq ReadControllerBitsAltInit ; CPU:$CC7B PRG:0C7B F0 EF
|
|
ldx #$01 ; CPU:$CC7D PRG:0C7D A2 01
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReadControllerBitsAlt2Init
|
|
; Global: Sets the loop counter for the third controller read path.
|
|
; Local: Falls into ReadControllerBitsAlt2Loop.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, Y.
|
|
; -----------------------------------------------------------------------------
|
|
ReadControllerBitsAlt2Init:
|
|
ldy #$08 ; CPU:$CC7F PRG:0C7F A0 08
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReadControllerBitsAlt2Loop
|
|
; Global: Third eight-bit read, shifting into the array at $4B that the direction checks later examine.
|
|
; Local: Loops Y down from eight, then returns.
|
|
; Parameters: Y = remaining reads.
|
|
; Returns: Eight bits collected.
|
|
; Clobbers: A, X, Y; P2Buttons.
|
|
; -----------------------------------------------------------------------------
|
|
ReadControllerBitsAlt2Loop:
|
|
lda $4016,x ; CPU:$CC81 PRG:0C81 BD 16 40
|
|
lsr a ; CPU:$CC84 PRG:0C84 4A
|
|
rol Zp4B,x ; CPU:$CC85 PRG:0C85 36 4B
|
|
lsr a ; CPU:$CC87 PRG:0C87 4A
|
|
rol Zp49,x ; CPU:$CC88 PRG:0C88 36 49
|
|
dey ; CPU:$CC8A PRG:0C8A 88
|
|
bne ReadControllerBitsAlt2Loop ; CPU:$CC8B PRG:0C8B D0 F4
|
|
dex ; CPU:$CC8D PRG:0C8D CA
|
|
beq ReadControllerBitsAlt2Init ; CPU:$CC8E PRG:0C8E F0 EF
|
|
lda #$00 ; CPU:$CC90 PRG:0C90 A9 00
|
|
sta Zp4D ; CPU:$CC92 PRG:0C92 85 4D
|
|
lda Zp49 ; CPU:$CC94 PRG:0C94 A5 49
|
|
cmp #$20 ; CPU:$CC96 PRG:0C96 C9 20
|
|
bne CheckStickUp ; CPU:$CC98 PRG:0C98 D0 06
|
|
lda #$80 ; CPU:$CC9A PRG:0C9A A9 80
|
|
ora Zp4D ; CPU:$CC9C PRG:0C9C 05 4D
|
|
sta Zp4D ; CPU:$CC9E PRG:0C9E 85 4D
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckStickUp
|
|
; Global: Compares the accumulated direction byte against $10 and records the result when the d-pad is being held up.
|
|
; Local: Falls through to CheckStickDown.
|
|
; Parameters: None.
|
|
; Returns: Direction state updated.
|
|
; Clobbers: A; PrevStickState.
|
|
; -----------------------------------------------------------------------------
|
|
CheckStickUp:
|
|
lda Zp4A ; CPU:$CCA0 PRG:0CA0 A5 4A
|
|
cmp #$10 ; CPU:$CCA2 PRG:0CA2 C9 10
|
|
bne CheckStickDown ; CPU:$CCA4 PRG:0CA4 D0 06
|
|
lda #$40 ; CPU:$CCA6 PRG:0CA6 A9 40
|
|
ora Zp4D ; CPU:$CCA8 PRG:0CA8 05 4D
|
|
sta Zp4D ; CPU:$CCAA PRG:0CAA 85 4D
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckStickDown
|
|
; Global: Compares against $20 for the down direction.
|
|
; Local: Falls through to CheckStickLeft.
|
|
; Parameters: None.
|
|
; Returns: Direction state updated.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
CheckStickDown:
|
|
lda Zp4B ; CPU:$CCAC PRG:0CAC A5 4B
|
|
cmp #$10 ; CPU:$CCAE PRG:0CAE C9 10
|
|
bne CheckStickLeft ; CPU:$CCB0 PRG:0CB0 D0 06
|
|
lda #$20 ; CPU:$CCB2 PRG:0CB2 A9 20
|
|
ora Zp4D ; CPU:$CCB4 PRG:0CB4 05 4D
|
|
sta Zp4D ; CPU:$CCB6 PRG:0CB6 85 4D
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckStickLeft
|
|
; Global: Compares against $C0 for the left direction.
|
|
; Local: Falls through to CheckStickRight.
|
|
; Parameters: None.
|
|
; Returns: Direction state updated.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
CheckStickLeft:
|
|
lda Zp4C ; CPU:$CCB8 PRG:0CB8 A5 4C
|
|
cmp #$20 ; CPU:$CCBA PRG:0CBA C9 20
|
|
bne CheckStickRight ; CPU:$CCBC PRG:0CBC D0 06
|
|
lda #$10 ; CPU:$CCBE PRG:0CBE A9 10
|
|
ora Zp4D ; CPU:$CCC0 PRG:0CC0 05 4D
|
|
sta Zp4D ; CPU:$CCC2 PRG:0CC2 85 4D
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckStickRight
|
|
; Global: Compares against $C0 for the right direction.
|
|
; Local: Falls through to LatchPreviousStickState.
|
|
; Parameters: None.
|
|
; Returns: Direction state updated.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
CheckStickRight:
|
|
lda Zp4D ; CPU:$CCC4 PRG:0CC4 A5 4D
|
|
cmp #$C0 ; CPU:$CCC6 PRG:0CC6 C9 C0
|
|
bne CheckStickDiagonal ; CPU:$CCC8 PRG:0CC8 D0 0A
|
|
ldx #$02 ; CPU:$CCCA PRG:0CCA A2 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: LatchPreviousStickState
|
|
; Global: Copies the current direction accumulators into the previous-state array so the next frame can detect edges.
|
|
; Local: Falls through when X reaches its limit.
|
|
; Parameters: X = direction index.
|
|
; Returns: Previous state updated.
|
|
; Clobbers: X; PrevStickState.
|
|
; -----------------------------------------------------------------------------
|
|
LatchPreviousStickState:
|
|
lda Zp44,x ; CPU:$CCCC PRG:0CCC B5 44
|
|
sta Zp42,x ; CPU:$CCCE PRG:0CCE 95 42
|
|
dex ; CPU:$CCD0 PRG:0CD0 CA
|
|
bne LatchPreviousStickState ; CPU:$CCD1 PRG:0CD1 D0 F9
|
|
rts ; CPU:$CCD3 PRG:0CD3 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: CheckStickDiagonal
|
|
; Global: Tests for a combined diagonal before the previous state is latched.
|
|
; Local: Falls through to LatchPreviousDiagonalState.
|
|
; Parameters: None.
|
|
; Returns: Diagonal state updated.
|
|
; Clobbers: A, X.
|
|
; -----------------------------------------------------------------------------
|
|
CheckStickDiagonal:
|
|
cmp #$30 ; CPU:$CCD4 PRG:0CD4 C9 30
|
|
bne ReturnFromStickDecode ; CPU:$CCD6 PRG:0CD6 D0 09
|
|
ldx #$02 ; CPU:$CCD8 PRG:0CD8 A2 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: LatchPreviousDiagonalState
|
|
; Global: Latches the diagonal accumulators into the previous-state array.
|
|
; Local: Returns to the caller via ReturnFromStickDecode.
|
|
; Parameters: X = direction index.
|
|
; Returns: Previous diagonal state updated.
|
|
; Clobbers: X; PrevStickState.
|
|
; -----------------------------------------------------------------------------
|
|
LatchPreviousDiagonalState:
|
|
lda Zp46,x ; CPU:$CCDA PRG:0CDA B5 46
|
|
sta Zp42,x ; CPU:$CCDC PRG:0CDC 95 42
|
|
dex ; CPU:$CCDE PRG:0CDE CA
|
|
bne LatchPreviousDiagonalState ; CPU:$CCDF PRG:0CDF D0 F9
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReturnFromStickDecode
|
|
; Global: Returns from the direction decode with A holding the decoded value.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: A = decoded direction.
|
|
; Clobbers: A.
|
|
; -----------------------------------------------------------------------------
|
|
ReturnFromStickDecode:
|
|
rts ; CPU:$CCE1 PRG:0CE1 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WaitForVblank
|
|
; Global: Waits for vblank, preserves A, and reads the PPUCTRL shadow in preparation for VRAM access.
|
|
; Local: Returns once vblank has been seen.
|
|
; Parameters: None.
|
|
; Returns: A preserved; vblank flag consumed.
|
|
; Clobbers: stack via pha/pla; $2002.
|
|
; -----------------------------------------------------------------------------
|
|
WaitForVblank:
|
|
pha ; CPU:$CCE2 PRG:0CE2 48
|
|
lda $2002 ; CPU:$CCE3 PRG:0CE3 AD 02 20
|
|
lda ZpEF ; CPU:$CCE6 PRG:0CE6 A5 EF
|
|
ora #$80 ; CPU:$CCE8 PRG:0CE8 09 80
|
|
sta ZpEF ; CPU:$CCEA PRG:0CEA 85 EF
|
|
sta $2000 ; CPU:$CCEC PRG:0CEC 8D 00 20
|
|
sta ZpE0 ; CPU:$CCEF PRG:0CEF 85 E0
|
|
pla ; CPU:$CCF1 PRG:0CF1 68
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WaitForNmiComplete
|
|
; Global: Spins until the NMI handler clears NmiInProgressFlag, so VRAM writes never race the handler.
|
|
; Local: RTS once the flag clears.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: $E0.
|
|
; -----------------------------------------------------------------------------
|
|
WaitForNmiComplete:
|
|
bit ZpE0 ; CPU:$CCF2 PRG:0CF2 24 E0
|
|
bmi WaitForNmiComplete ; CPU:$CCF4 PRG:0CF4 30 FC
|
|
rts ; CPU:$CCF6 PRG:0CF6 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: NmiHandler
|
|
; Global: Non-maskable interrupt entry. Saves registers, runs the per-frame PPU work (scroll latch, PPUCTRL and mask setup, OAM DMA) and the VRAM writer, then restores registers and returns.
|
|
; Local: Never returns normally; exits through RTI.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y, P; PPU and OAM; VRAM shadow.
|
|
; -----------------------------------------------------------------------------
|
|
NmiHandler:
|
|
pha ; CPU:$CCF7 PRG:0CF7 48
|
|
txa ; CPU:$CCF8 PRG:0CF8 8A
|
|
pha ; CPU:$CCF9 PRG:0CF9 48
|
|
tya ; CPU:$CCFA PRG:0CFA 98
|
|
pha ; CPU:$CCFB PRG:0CFB 48
|
|
jsr $CD17 ; CPU:$CCFC PRG:0CFC 20 17 CD
|
|
jsr $CD24 ; CPU:$CCFF PRG:0CFF 20 24 CD
|
|
lda $0300 ; CPU:$CD02 PRG:0D02 AD 00 03
|
|
beq NmiContinue ; CPU:$CD05 PRG:0D05 F0 03
|
|
jsr $CE4F ; CPU:$CD07 PRG:0D07 20 4F CE
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: NmiContinue
|
|
; Global: Second half of the NMI body, reached after the register save.
|
|
; Local: Falls through into the PPU setup calls.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y.
|
|
; -----------------------------------------------------------------------------
|
|
NmiContinue:
|
|
jsr $CE3C ; CPU:$CD0A PRG:0D0A 20 3C CE
|
|
lda #$00 ; CPU:$CD0D PRG:0D0D A9 00
|
|
sta ZpE0 ; CPU:$CD0F PRG:0D0F 85 E0
|
|
pla ; CPU:$CD11 PRG:0D11 68
|
|
tay ; CPU:$CD12 PRG:0D12 A8
|
|
pla ; CPU:$CD13 PRG:0D13 68
|
|
tax ; CPU:$CD14 PRG:0D14 AA
|
|
pla ; CPU:$CD15 PRG:0D15 68
|
|
rti ; CPU:$CD16 PRG:0D16 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: PpuCtrlSetup
|
|
; Global: Reads $2002 to clear the vblank latch and masks bit 7 out of the PPUCTRL shadow before it is written back.
|
|
; Local: Returns to the NMI body.
|
|
; Parameters: None.
|
|
; Returns: PpuCtrlShadow updated with bit 7 clear.
|
|
; Clobbers: A; $2002, PpuCtrlShadow.
|
|
; -----------------------------------------------------------------------------
|
|
PpuCtrlSetup:
|
|
lda $2002 ; CPU:$CD17 PRG:0D17 AD 02 20
|
|
lda ZpEF ; CPU:$CD1A PRG:0D1A A5 EF
|
|
and #$7F ; CPU:$CD1C PRG:0D1C 29 7F
|
|
sta ZpEF ; CPU:$CD1E PRG:0D1E 85 EF
|
|
sta $2000 ; CPU:$CD20 PRG:0D20 8D 00 20
|
|
rts ; CPU:$CD23 PRG:0D23 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: OamDmaSetup
|
|
; Global: Points the PPU OAM address at $0200 and starts the 256-byte sprite DMA.
|
|
; Local: Returns to the NMI body once the transfer is issued.
|
|
; Parameters: None.
|
|
; Returns: OAM DMA issued.
|
|
; Clobbers: A; $2003, $4014.
|
|
; -----------------------------------------------------------------------------
|
|
OamDmaSetup:
|
|
lda #$00 ; CPU:$CD24 PRG:0D24 A9 00
|
|
sta $2003 ; CPU:$CD26 PRG:0D26 8D 03 20
|
|
lda #$02 ; CPU:$CD29 PRG:0D29 A9 02
|
|
sta $4014 ; CPU:$CD2B PRG:0D2B 8D 14 40
|
|
rts ; CPU:$CD2E PRG:0D2E 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: PpuMaskSetup
|
|
; Global: Masks bits 5 and 3 out of the PPUMASK shadow and writes the result to both the shadow and $2001.
|
|
; Local: Falls through to WritePpuMask.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A; $2001, PpuMaskShadow.
|
|
; -----------------------------------------------------------------------------
|
|
PpuMaskSetup:
|
|
lda ZpEE ; CPU:$CD2F PRG:0D2F A5 EE
|
|
and #$E7 ; CPU:$CD31 PRG:0D31 29 E7
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WritePpuMask
|
|
; Global: Writes the prepared PPUMASK value to both the shadow and the hardware register, then returns.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A; $2001, PpuMaskShadow.
|
|
; -----------------------------------------------------------------------------
|
|
WritePpuMask:
|
|
sta ZpEE ; CPU:$CD33 PRG:0D33 85 EE
|
|
sta $2001 ; CPU:$CD35 PRG:0D35 8D 01 20
|
|
rts ; CPU:$CD38 PRG:0D38 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: EnableSpritesAndBackground
|
|
; Global: Sets bits 4 and 3 in the PPUMASK shadow to turn sprites and background back on, then shares WritePpuMask's store-and-return tail.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A; $2001, PpuMaskShadow.
|
|
; -----------------------------------------------------------------------------
|
|
EnableSpritesAndBackground:
|
|
lda ZpEE ; CPU:$CD39 PRG:0D39 A5 EE
|
|
ora #$18 ; CPU:$CD3B PRG:0D3B 09 18
|
|
bne WritePpuMask ; CPU:$CD3D PRG:0D3D D0 F4
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramPtrWrite
|
|
; Global: Top of the indirect VRAM writer. First runs RetAddrUpdate so the caller's return address drives the dispatch, then reads the next byte from the operation stream.
|
|
; Local: Falls into VramPtrTableRead; the two are called as a pair.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; VRAM pointer.
|
|
; -----------------------------------------------------------------------------
|
|
VramPtrWrite:
|
|
jsr $CDC8 ; CPU:$CD3F PRG:0D3F 20 C8 CD
|
|
jmp $CD99 ; CPU:$CD42 PRG:0D42 4C 99 CD
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramWriteLoop
|
|
; Global: Sets the PPU address for the current VRAM command by writing the high byte and low byte to $2006 in two steps, pulling each from the stream.
|
|
; Local: Loops over the stream bytes, then falls through.
|
|
; Parameters: Y = stream index.
|
|
; Returns: PPU address latched.
|
|
; Clobbers: A, Y; $2006; stack via pha/pla.
|
|
; -----------------------------------------------------------------------------
|
|
VramWriteLoop:
|
|
pha ; CPU:$CD45 PRG:0D45 48
|
|
sta $2006 ; CPU:$CD46 PRG:0D46 8D 06 20
|
|
iny ; CPU:$CD49 PRG:0D49 C8
|
|
lda (Zp00),y ; CPU:$CD4A PRG:0D4A B1 00
|
|
sta $2006 ; CPU:$CD4C PRG:0D4C 8D 06 20
|
|
iny ; CPU:$CD4F PRG:0D4F C8
|
|
lda (Zp00),y ; CPU:$CD50 PRG:0D50 B1 00
|
|
asl a ; CPU:$CD52 PRG:0D52 0A
|
|
pha ; CPU:$CD53 PRG:0D53 48
|
|
lda ZpEF ; CPU:$CD54 PRG:0D54 A5 EF
|
|
ora #$04 ; CPU:$CD56 PRG:0D56 09 04
|
|
bcs WritePpuCtrlFromShadow ; CPU:$CD58 PRG:0D58 B0 02
|
|
and #$FB ; CPU:$CD5A PRG:0D5A 29 FB
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WritePpuCtrlFromShadow
|
|
; Global: Writes A to PPUCTRL and stores the same value back into the shadow, so the shadow and the hardware register never disagree.
|
|
; Local: Falls through to the flag save that the dispatch stream needs.
|
|
; Parameters: A = PPUCTRL value.
|
|
; Returns: Nothing.
|
|
; Clobbers: A; $2000, PpuCtrlShadow; stack via asl/php.
|
|
; -----------------------------------------------------------------------------
|
|
WritePpuCtrlFromShadow:
|
|
sta $2000 ; CPU:$CD5C PRG:0D5C 8D 00 20
|
|
sta ZpEF ; CPU:$CD5F PRG:0D5F 85 EF
|
|
pla ; CPU:$CD61 PRG:0D61 68
|
|
asl a ; CPU:$CD62 PRG:0D62 0A
|
|
php ; CPU:$CD63 PRG:0D63 08
|
|
bcc ReturnFromVramPtrWrite ; CPU:$CD64 PRG:0D64 90 03
|
|
ora #$02 ; CPU:$CD66 PRG:0D66 09 02
|
|
iny ; CPU:$CD68 PRG:0D68 C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ReturnFromVramPtrWrite
|
|
; Global: Restores the flags the dispatch stream saved, then normalises carry: it clears carry and branches when the restored result was non-zero, and sets carry otherwise. Carry is the stream's 'long command' selector.
|
|
; Local: Branches to ComputeVramByteCount or falls through with carry set.
|
|
; Parameters: None.
|
|
; Returns: Carry set per the restored flags.
|
|
; Clobbers: P; stack via plp.
|
|
; -----------------------------------------------------------------------------
|
|
ReturnFromVramPtrWrite:
|
|
plp ; CPU:$CD69 PRG:0D69 28
|
|
clc ; CPU:$CD6A PRG:0D6A 18
|
|
bne ComputeVramByteCount ; CPU:$CD6B PRG:0D6B D0 01
|
|
sec ; CPU:$CD6D PRG:0D6D 38
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: ComputeVramByteCount
|
|
; Global: Derives the write length from the command byte using two rotations, giving the count of following data bytes.
|
|
; Local: Falls through to AdvanceVramReadIndex.
|
|
; Parameters: A = command byte.
|
|
; Returns: X = byte count.
|
|
; Clobbers: A, X.
|
|
; -----------------------------------------------------------------------------
|
|
ComputeVramByteCount:
|
|
ror a ; CPU:$CD6E PRG:0D6E 6A
|
|
lsr a ; CPU:$CD6F PRG:0D6F 4A
|
|
tax ; CPU:$CD70 PRG:0D70 AA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: AdvanceVramReadIndex
|
|
; Global: Steps the stream read index, honouring a carry-flag adjustment for the long-command form.
|
|
; Local: Falls through to WriteVramStreamByte.
|
|
; Parameters: Carry selects the index step.
|
|
; Returns: Stream index advanced.
|
|
; Clobbers: Y, carry.
|
|
; -----------------------------------------------------------------------------
|
|
AdvanceVramReadIndex:
|
|
bcs WriteVramStreamByte ; CPU:$CD71 PRG:0D71 B0 01
|
|
iny ; CPU:$CD73 PRG:0D73 C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WriteVramStreamByte
|
|
; Global: Copies one byte per iteration from the stream, indexed indirectly through the VRAM pointer, straight into $2007.
|
|
; Local: Loops until X reaches zero, then falls through.
|
|
; Parameters: X = remaining bytes.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; $2007.
|
|
; -----------------------------------------------------------------------------
|
|
WriteVramStreamByte:
|
|
lda (Zp00),y ; CPU:$CD74 PRG:0D74 B1 00
|
|
sta $2007 ; CPU:$CD76 PRG:0D76 8D 07 20
|
|
dex ; CPU:$CD79 PRG:0D79 CA
|
|
bne AdvanceVramReadIndex ; CPU:$CD7A PRG:0D7A D0 F5
|
|
pla ; CPU:$CD7C PRG:0D7C 68
|
|
cmp #$3F ; CPU:$CD7D PRG:0D7D C9 3F
|
|
bne AdvanceVramPointerByY ; CPU:$CD7F PRG:0D7F D0 0C
|
|
sta $2006 ; CPU:$CD81 PRG:0D81 8D 06 20
|
|
stx $2006 ; CPU:$CD84 PRG:0D84 8E 06 20
|
|
stx $2006 ; CPU:$CD87 PRG:0D87 8E 06 20
|
|
stx $2006 ; CPU:$CD8A PRG:0D8A 8E 06 20
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: AdvanceVramPointerByY
|
|
; Global: Adds the stream offset to the VRAM pointer before the next command.
|
|
; Local: Falls through to the next command dispatch.
|
|
; Parameters: Y = offset.
|
|
; Returns: Pointer advanced.
|
|
; Clobbers: A, Y; VramPtrLo/Hi.
|
|
; -----------------------------------------------------------------------------
|
|
AdvanceVramPointerByY:
|
|
sec ; CPU:$CD8D PRG:0D8D 38
|
|
tya ; CPU:$CD8E PRG:0D8E 98
|
|
adc Zp00 ; CPU:$CD8F PRG:0D8F 65 00
|
|
sta Zp00 ; CPU:$CD91 PRG:0D91 85 00
|
|
lda #$00 ; CPU:$CD93 PRG:0D93 A9 00
|
|
adc Zp01 ; CPU:$CD95 PRG:0D95 65 01
|
|
sta Zp01 ; CPU:$CD97 PRG:0D97 85 01
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramPtrTableRead
|
|
; Global: Reads the next opcode byte from the operation stream indexed by the VRAM pointer.
|
|
; Local: Branches to HandleJmpOpcode or HandlePpuCtrlOpcode by opcode value.
|
|
; Parameters: None.
|
|
; Returns: A = opcode byte.
|
|
; Clobbers: A, X, Y; VramPtrLo/Hi.
|
|
; -----------------------------------------------------------------------------
|
|
VramPtrTableRead:
|
|
ldx $2002 ; CPU:$CD99 PRG:0D99 AE 02 20
|
|
ldy #$00 ; CPU:$CD9C PRG:0D9C A0 00
|
|
lda (Zp00),y ; CPU:$CD9E PRG:0D9E B1 00
|
|
bpl HandlePpuCtrlOpcode ; CPU:$CDA0 PRG:0DA0 10 01
|
|
rts ; CPU:$CDA2 PRG:0DA2 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandlePpuCtrlOpcode
|
|
; Global: Recognises the stream opcode $60 and performs the deferred PPUCTRL write it introduces.
|
|
; Local: Falls through to the shared VRAM write path.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A; PpuCtrlShadow, $2000.
|
|
; -----------------------------------------------------------------------------
|
|
HandlePpuCtrlOpcode:
|
|
cmp #$60 ; CPU:$CDA3 PRG:0DA3 C9 60
|
|
bne HandleJmpOpcode ; CPU:$CDA5 PRG:0DA5 D0 0A
|
|
pla ; CPU:$CDA7 PRG:0DA7 68
|
|
sta Zp01 ; CPU:$CDA8 PRG:0DA8 85 01
|
|
pla ; CPU:$CDAA PRG:0DAA 68
|
|
sta Zp00 ; CPU:$CDAB PRG:0DAB 85 00
|
|
ldy #$02 ; CPU:$CDAD PRG:0DAD A0 02
|
|
bne AdvanceVramPointerByY ; CPU:$CDAF PRG:0DAF D0 DC
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: HandleJmpOpcode
|
|
; Global: Recognises the stream opcode $4C and rewrites the dispatch pointer so the stream can jump within itself.
|
|
; Local: Falls through to the shared VRAM write path.
|
|
; Parameters: None.
|
|
; Returns: Dispatch pointer updated.
|
|
; Clobbers: A, X, Y; VramPtrLo/Hi.
|
|
; -----------------------------------------------------------------------------
|
|
HandleJmpOpcode:
|
|
cmp #$4C ; CPU:$CDB1 PRG:0DB1 C9 4C
|
|
bne VramWriteLoop ; CPU:$CDB3 PRG:0DB3 D0 90
|
|
lda Zp00 ; CPU:$CDB5 PRG:0DB5 A5 00
|
|
pha ; CPU:$CDB7 PRG:0DB7 48
|
|
lda Zp01 ; CPU:$CDB8 PRG:0DB8 A5 01
|
|
pha ; CPU:$CDBA PRG:0DBA 48
|
|
iny ; CPU:$CDBB PRG:0DBB C8
|
|
lda (Zp00),y ; CPU:$CDBC PRG:0DBC B1 00
|
|
tax ; CPU:$CDBE PRG:0DBE AA
|
|
iny ; CPU:$CDBF PRG:0DBF C8
|
|
lda (Zp00),y ; CPU:$CDC0 PRG:0DC0 B1 00
|
|
sta Zp01 ; CPU:$CDC2 PRG:0DC2 85 01
|
|
stx Zp00 ; CPU:$CDC4 PRG:0DC4 86 00
|
|
bcs VramPtrTableRead ; CPU:$CDC6 PRG:0DC6 B0 D1
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: RetAddrUpdate
|
|
; Global: Pulls the caller's return address off the CPU stack and uses it as a program counter for the VRAM command stream. This is the runtime dispatch that a purely static tracer cannot follow, and the reason the operation handlers look unreachable.
|
|
; Local: Jumps into the stream; each handler eventually returns here.
|
|
; Parameters: None.
|
|
; Returns: Return address rewritten from the stream.
|
|
; Clobbers: A, X, Y, stack; RetAddrTempLo/Hi.
|
|
; -----------------------------------------------------------------------------
|
|
RetAddrUpdate:
|
|
tsx ; CPU:$CDC8 PRG:0DC8 BA
|
|
lda $0103,x ; CPU:$CDC9 PRG:0DC9 BD 03 01
|
|
sta Zp05 ; CPU:$CDCC PRG:0DCC 85 05
|
|
lda $0104,x ; CPU:$CDCE PRG:0DCE BD 04 01
|
|
sta Zp06 ; CPU:$CDD1 PRG:0DD1 85 06
|
|
ldy #$01 ; CPU:$CDD3 PRG:0DD3 A0 01
|
|
lda (Zp05),y ; CPU:$CDD5 PRG:0DD5 B1 05
|
|
sta Zp00 ; CPU:$CDD7 PRG:0DD7 85 00
|
|
iny ; CPU:$CDD9 PRG:0DD9 C8
|
|
lda (Zp05),y ; CPU:$CDDA PRG:0DDA B1 05
|
|
sta Zp01 ; CPU:$CDDC PRG:0DDC 85 01
|
|
clc ; CPU:$CDDE PRG:0DDE 18
|
|
lda #$02 ; CPU:$CDDF PRG:0DDF A9 02
|
|
adc Zp05 ; CPU:$CDE1 PRG:0DE1 65 05
|
|
sta $0103,x ; CPU:$CDE3 PRG:0DE3 9D 03 01
|
|
lda #$00 ; CPU:$CDE6 PRG:0DE6 A9 00
|
|
adc Zp06 ; CPU:$CDE8 PRG:0DE8 65 06
|
|
sta $0104,x ; CPU:$CDEA PRG:0DEA 9D 04 01
|
|
rts ; CPU:$CDED PRG:0DED 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramWrite
|
|
; Global: Direct VRAM writer used by the burst path: sets the pointer, length and destination registers from its arguments.
|
|
; Local: Falls into VramWriteSetup.
|
|
; Parameters: A, X, Y = pointer, length, destination.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; VramPtrLo/Hi.
|
|
; -----------------------------------------------------------------------------
|
|
VramWrite:
|
|
sta Zp00 ; CPU:$CDEE PRG:0DEE 85 00
|
|
stx Zp01 ; CPU:$CDF0 PRG:0DF0 86 01
|
|
sty Zp02 ; CPU:$CDF2 PRG:0DF2 84 02
|
|
lda $2002 ; CPU:$CDF4 PRG:0DF4 AD 02 20
|
|
lda ZpEF ; CPU:$CDF7 PRG:0DF7 A5 EF
|
|
and #$FB ; CPU:$CDF9 PRG:0DF9 29 FB
|
|
sta $2000 ; CPU:$CDFB PRG:0DFB 8D 00 20
|
|
sta ZpEF ; CPU:$CDFE PRG:0DFE 85 EF
|
|
lda Zp00 ; CPU:$CE00 PRG:0E00 A5 00
|
|
sta $2006 ; CPU:$CE02 PRG:0E02 8D 06 20
|
|
ldy #$00 ; CPU:$CE05 PRG:0E05 A0 00
|
|
sty $2006 ; CPU:$CE07 PRG:0E07 8C 06 20
|
|
ldx #$04 ; CPU:$CE0A PRG:0E0A A2 04
|
|
cmp #$20 ; CPU:$CE0C PRG:0E0C C9 20
|
|
bcs VramWriteSetup ; CPU:$CE0E PRG:0E0E B0 02
|
|
ldx Zp02 ; CPU:$CE10 PRG:0E10 A6 02
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramWriteSetup
|
|
; Global: Prepares the length counter for a direct VRAM write.
|
|
; Local: Falls into WriteVramZeroFill or WriteVramByteStream by length.
|
|
; Parameters: None.
|
|
; Returns: Length loaded.
|
|
; Clobbers: A, Y; VramOpLength.
|
|
; -----------------------------------------------------------------------------
|
|
VramWriteSetup:
|
|
ldy #$00 ; CPU:$CE12 PRG:0E12 A0 00
|
|
lda Zp01 ; CPU:$CE14 PRG:0E14 A5 01
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WriteVramZeroFill
|
|
; Global: Writes a run of $00 bytes to $2007 until the length counter expires.
|
|
; Local: Falls through when Y reaches zero.
|
|
; Parameters: Y = remaining bytes.
|
|
; Returns: Nothing.
|
|
; Clobbers: Y; $2007.
|
|
; -----------------------------------------------------------------------------
|
|
WriteVramZeroFill:
|
|
sta $2007 ; CPU:$CE16 PRG:0E16 8D 07 20
|
|
dey ; CPU:$CE19 PRG:0E19 88
|
|
bne WriteVramZeroFill ; CPU:$CE1A PRG:0E1A D0 FA
|
|
dex ; CPU:$CE1C PRG:0E1C CA
|
|
bne WriteVramZeroFill ; CPU:$CE1D PRG:0E1D D0 F7
|
|
ldy Zp02 ; CPU:$CE1F PRG:0E1F A4 02
|
|
lda Zp00 ; CPU:$CE21 PRG:0E21 A5 00
|
|
cmp #$20 ; CPU:$CE23 PRG:0E23 C9 20
|
|
bcc VramWriteDone ; CPU:$CE25 PRG:0E25 90 12
|
|
adc #$02 ; CPU:$CE27 PRG:0E27 69 02
|
|
sta $2006 ; CPU:$CE29 PRG:0E29 8D 06 20
|
|
lda #$C0 ; CPU:$CE2C PRG:0E2C A9 C0
|
|
sta $2006 ; CPU:$CE2E PRG:0E2E 8D 06 20
|
|
ldx #$40 ; CPU:$CE31 PRG:0E31 A2 40
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: WriteVramByteStream
|
|
; Global: Writes a run of bytes to $2007, one per X iteration.
|
|
; Local: Falls through when X reaches zero.
|
|
; Parameters: X = remaining bytes.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X; $2007.
|
|
; -----------------------------------------------------------------------------
|
|
WriteVramByteStream:
|
|
sty $2007 ; CPU:$CE33 PRG:0E33 8C 07 20
|
|
dex ; CPU:$CE36 PRG:0E36 CA
|
|
bne WriteVramByteStream ; CPU:$CE37 PRG:0E37 D0 FA
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramWriteDone
|
|
; Global: Restores the VRAM pointer high byte and returns from a direct write.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: A = final pointer value.
|
|
; Clobbers: A, X.
|
|
; -----------------------------------------------------------------------------
|
|
VramWriteDone:
|
|
ldx Zp01 ; CPU:$CE39 PRG:0E39 A6 01
|
|
rts ; CPU:$CE3B PRG:0E3B 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: PpuScrollLatch
|
|
; Global: Writes the latched scroll X and Y values to $2005 in the correct order.
|
|
; Local: Returns to the NMI body.
|
|
; Parameters: None.
|
|
; Returns: Scroll latched.
|
|
; Clobbers: A; $2002, $2005.
|
|
; -----------------------------------------------------------------------------
|
|
PpuScrollLatch:
|
|
lda $2002 ; CPU:$CE3C PRG:0E3C AD 02 20
|
|
lda ZpED ; CPU:$CE3F PRG:0E3F A5 ED
|
|
sta $2005 ; CPU:$CE41 PRG:0E41 8D 05 20
|
|
lda ZpEC ; CPU:$CE44 PRG:0E44 A5 EC
|
|
sta $2005 ; CPU:$CE46 PRG:0E46 8D 05 20
|
|
lda ZpEF ; CPU:$CE49 PRG:0E49 A5 EF
|
|
sta $2000 ; CPU:$CE4B PRG:0E4B 8D 00 20
|
|
rts ; CPU:$CE4E PRG:0E4E 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramBurstWrite
|
|
; Global: Burst writer: clears bit 2 of the PPUCTRL shadow so VRAM stays accessible, then walks the command list at $0302.
|
|
; Local: Falls into VramBurstWriteChunk.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A; $2000, PpuCtrlShadow.
|
|
; -----------------------------------------------------------------------------
|
|
VramBurstWrite:
|
|
lda ZpEF ; CPU:$CE4F PRG:0E4F A5 EF
|
|
and #$FB ; CPU:$CE51 PRG:0E51 29 FB
|
|
sta $2000 ; CPU:$CE53 PRG:0E53 8D 00 20
|
|
sta ZpEF ; CPU:$CE56 PRG:0E56 85 EF
|
|
ldx $2002 ; CPU:$CE58 PRG:0E58 AE 02 20
|
|
ldy #$00 ; CPU:$CE5B PRG:0E5B A0 00
|
|
beq VramBurstNextCommand ; CPU:$CE5D PRG:0E5D F0 2B
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramBurstWriteChunk
|
|
; Global: Writes one chunk of the burst stream to $2007.
|
|
; Local: Falls through to VramBurstWriteNext.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, Y; $2006, $2007.
|
|
; -----------------------------------------------------------------------------
|
|
VramBurstWriteChunk:
|
|
pha ; CPU:$CE5F PRG:0E5F 48
|
|
sta $2006 ; CPU:$CE60 PRG:0E60 8D 06 20
|
|
iny ; CPU:$CE63 PRG:0E63 C8
|
|
lda $0302,y ; CPU:$CE64 PRG:0E64 B9 02 03
|
|
sta $2006 ; CPU:$CE67 PRG:0E67 8D 06 20
|
|
iny ; CPU:$CE6A PRG:0E6A C8
|
|
ldx $0302,y ; CPU:$CE6B PRG:0E6B BE 02 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramBurstWriteNext
|
|
; Global: Advances to the next burst entry and tests its sign bit to decide between another chunk and the end of the list.
|
|
; Local: Branches to VramBurstSkipRun or VramBurstNextCommand.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, Y; $0302.
|
|
; -----------------------------------------------------------------------------
|
|
VramBurstWriteNext:
|
|
iny ; CPU:$CE6E PRG:0E6E C8
|
|
lda $0302,y ; CPU:$CE6F PRG:0E6F B9 02 03
|
|
sta $2007 ; CPU:$CE72 PRG:0E72 8D 07 20
|
|
dex ; CPU:$CE75 PRG:0E75 CA
|
|
bne VramBurstWriteNext ; CPU:$CE76 PRG:0E76 D0 F6
|
|
pla ; CPU:$CE78 PRG:0E78 68
|
|
cmp #$3F ; CPU:$CE79 PRG:0E79 C9 3F
|
|
bne VramBurstSkipRun ; CPU:$CE7B PRG:0E7B D0 0C
|
|
sta $2006 ; CPU:$CE7D PRG:0E7D 8D 06 20
|
|
stx $2006 ; CPU:$CE80 PRG:0E80 8E 06 20
|
|
stx $2006 ; CPU:$CE83 PRG:0E83 8E 06 20
|
|
stx $2006 ; CPU:$CE86 PRG:0E86 8E 06 20
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramBurstSkipRun
|
|
; Global: Skips a run of burst entries without writing them.
|
|
; Local: Falls into VramBurstWriteChunk once the skip is done.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: Y; $0302.
|
|
; -----------------------------------------------------------------------------
|
|
VramBurstSkipRun:
|
|
iny ; CPU:$CE89 PRG:0E89 C8
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramBurstNextCommand
|
|
; Global: Fetches the next burst command byte and tests its sign to branch between a write and a skip.
|
|
; Local: Branches to VramBurstSkipRun or VramBurstWriteChunk.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, Y; $0302.
|
|
; -----------------------------------------------------------------------------
|
|
VramBurstNextCommand:
|
|
lda $0302,y ; CPU:$CE8A PRG:0E8A B9 02 03
|
|
bpl VramBurstWriteChunk ; CPU:$CE8D PRG:0E8D 10 D0
|
|
sta $0302 ; CPU:$CE8F PRG:0E8F 8D 02 03
|
|
lda #$00 ; CPU:$CE92 PRG:0E92 A9 00
|
|
sta $0301 ; CPU:$CE94 PRG:0E94 8D 01 03
|
|
rts ; CPU:$CE97 PRG:0E97 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: DispatchVramOp
|
|
; Global: Entry point for a VRAM command: saves the arguments, runs RetAddrUpdate to bind the stream, and begins executing the command.
|
|
; Local: Jumps into the command stream; returns via VramOpReturn.
|
|
; Parameters: A, X = command arguments.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; RetAddrTempLo/Hi, VramOpResult.
|
|
; -----------------------------------------------------------------------------
|
|
DispatchVramOp:
|
|
sta Zp03 ; CPU:$CE98 PRG:0E98 85 03
|
|
stx Zp02 ; CPU:$CE9A PRG:0E9A 86 02
|
|
jsr $CDC8 ; CPU:$CE9C PRG:0E9C 20 C8 CD
|
|
ldy #$00 ; CPU:$CE9F PRG:0E9F A0 00
|
|
lda (Zp00),y ; CPU:$CEA1 PRG:0EA1 B1 00
|
|
and #$0F ; CPU:$CEA3 PRG:0EA3 29 0F
|
|
sta Zp04 ; CPU:$CEA5 PRG:0EA5 85 04
|
|
lda (Zp00),y ; CPU:$CEA7 PRG:0EA7 B1 00
|
|
lsr a ; CPU:$CEA9 PRG:0EA9 4A
|
|
lsr a ; CPU:$CEAA PRG:0EAA 4A
|
|
lsr a ; CPU:$CEAB PRG:0EAB 4A
|
|
lsr a ; CPU:$CEAC PRG:0EAC 4A
|
|
sta Zp05 ; CPU:$CEAD PRG:0EAD 85 05
|
|
ldx $0301 ; CPU:$CEAF PRG:0EAF AE 01 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: StoreVramOpResult
|
|
; Global: Stores the VRAM operation's result and its length into the burst command table at $0302, indexed by X, running the length check between the two stores.
|
|
; Local: Returns to the caller via VramOpReturn.
|
|
; Parameters: X = table index.
|
|
; Returns: Burst table updated.
|
|
; Clobbers: A, X; $0302, VramOpResult, VramOpLength.
|
|
; -----------------------------------------------------------------------------
|
|
StoreVramOpResult:
|
|
lda Zp03 ; CPU:$CEB2 PRG:0EB2 A5 03
|
|
sta $0302,x ; CPU:$CEB4 PRG:0EB4 9D 02 03
|
|
jsr $CEF3 ; CPU:$CEB7 PRG:0EB7 20 F3 CE
|
|
lda Zp02 ; CPU:$CEBA PRG:0EBA A5 02
|
|
sta $0302,x ; CPU:$CEBC PRG:0EBC 9D 02 03
|
|
jsr $CEF3 ; CPU:$CEBF PRG:0EBF 20 F3 CE
|
|
lda Zp04 ; CPU:$CEC2 PRG:0EC2 A5 04
|
|
sta Zp06 ; CPU:$CEC4 PRG:0EC4 85 06
|
|
sta $0302,x ; CPU:$CEC6 PRG:0EC6 9D 02 03
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramOpDataStream
|
|
; Global: Walks the VRAM operation data stream one byte at a time.
|
|
; Local: Falls through when the stream is exhausted.
|
|
; Parameters: Y = stream index.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, Y.
|
|
; -----------------------------------------------------------------------------
|
|
VramOpDataStream:
|
|
jsr $CEF3 ; CPU:$CEC9 PRG:0EC9 20 F3 CE
|
|
iny ; CPU:$CECC PRG:0ECC C8
|
|
lda (Zp00),y ; CPU:$CECD PRG:0ECD B1 00
|
|
sta $0302,x ; CPU:$CECF PRG:0ECF 9D 02 03
|
|
dec Zp06 ; CPU:$CED2 PRG:0ED2 C6 06
|
|
bne VramOpDataStream ; CPU:$CED4 PRG:0ED4 D0 F3
|
|
jsr $CEF3 ; CPU:$CED6 PRG:0ED6 20 F3 CE
|
|
stx $0301 ; CPU:$CED9 PRG:0ED9 8E 01 03
|
|
clc ; CPU:$CEDC PRG:0EDC 18
|
|
lda #$20 ; CPU:$CEDD PRG:0EDD A9 20
|
|
adc Zp02 ; CPU:$CEDF PRG:0EDF 65 02
|
|
sta Zp02 ; CPU:$CEE1 PRG:0EE1 85 02
|
|
lda #$00 ; CPU:$CEE3 PRG:0EE3 A9 00
|
|
adc Zp03 ; CPU:$CEE5 PRG:0EE5 65 03
|
|
sta Zp03 ; CPU:$CEE7 PRG:0EE7 85 03
|
|
dec Zp05 ; CPU:$CEE9 PRG:0EE9 C6 05
|
|
bne StoreVramOpResult ; CPU:$CEEB PRG:0EEB D0 C5
|
|
lda #$FF ; CPU:$CEED PRG:0EED A9 FF
|
|
sta $0302,x ; CPU:$CEEF PRG:0EEF 9D 02 03
|
|
rts ; CPU:$CEF2 PRG:0EF2 60
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramOpLengthCheck
|
|
; Global: Checks the accumulated operation length against the limit at $0300 before continuing.
|
|
; Local: Branches to VramOpReturn when the limit is reached.
|
|
; Parameters: None.
|
|
; Returns: Carry reflects the comparison.
|
|
; Clobbers: X, carry; $0300.
|
|
; -----------------------------------------------------------------------------
|
|
VramOpLengthCheck:
|
|
inx ; CPU:$CEF3 PRG:0EF3 E8
|
|
cpx $0300 ; CPU:$CEF4 PRG:0EF4 EC 00 03
|
|
bcc VramOpReturn ; CPU:$CEF7 PRG:0EF7 90 0C
|
|
ldx $0301 ; CPU:$CEF9 PRG:0EF9 AE 01 03
|
|
lda #$FF ; CPU:$CEFC PRG:0EFC A9 FF
|
|
sta $0302,x ; CPU:$CEFE PRG:0EFE 9D 02 03
|
|
pla ; CPU:$CF01 PRG:0F01 68
|
|
pla ; CPU:$CF02 PRG:0F02 68
|
|
lda #$01 ; CPU:$CF03 PRG:0F03 A9 01
|
|
; -----------------------------------------------------------------------------
|
|
; Routine: VramOpReturn
|
|
; Global: Restores the saved dispatch state and returns from a VRAM operation.
|
|
; Local: RTS.
|
|
; Parameters: None.
|
|
; Returns: Nothing.
|
|
; Clobbers: A, X, Y; stack.
|
|
; -----------------------------------------------------------------------------
|
|
VramOpReturn:
|
|
rts ; CPU:$CF05 PRG:0F05 60
|
|
; ---- data region $CF06-$FFFF (12538 bytes) ----
|
|
; Split into named sub-blocks based on structural boundaries.
|
|
;
|
|
; Sub-block map:
|
|
; $CF06-$CF28 VramCommandStream1 VRAM command stream start - PPU addr/data pairs read by VramWriteLoop
|
|
; $CF29-$CF29 VramStream1Terminator FF terminator byte ending first command stream
|
|
; $CF2A-$CF3F VramCommandInlineCode Inline code after jsr $CE98 - lax $20D4, nop $C1,X, $61 padding
|
|
; $CF40-$D061 VramCommandBlock2 VRAM command/data block - PPU writes and OAM attribute patterns
|
|
; $D062-$D062 VramStream2Terminator FF terminator byte ending second command stream
|
|
; $D063-$D1F3 VramCommandBlock3 VRAM command/data block - continues command stream patterns
|
|
; $D1F4-$D1F4 VramStream3Terminator FF terminator byte ending third command stream
|
|
; $D1F5-$D4AD VramCommandBlock4 Largest VRAM command/data block - 697 bytes of command stream
|
|
; $D4AE-$D4AE OamTableStreamTerminator FF terminator byte before OAM gap data
|
|
; $D4AF-$D4E1 OamTableGap Gap data before OAM table at $D4E3
|
|
; $D4E2-$D4E2 OamTable1Terminator FF terminator byte before OAM table group 1
|
|
; $D4E3-$D5C2 OamTableGroups1 OAM table groups 1-7 (CopyOamFromTable reads $D4E3) - 7x32 byte tables
|
|
; $D5C3-$D5C3 OamTableStream2Terminator FF terminator byte before second OAM table group
|
|
; $D5C4-$D603 OamTableGroups2 OAM table groups 1-2 (CopyOamFromTable70 reads $D5C4) - 2x32 byte tables
|
|
; $D604-$D643 OamSpritePadding 64 bytes of $F4 sprite off-screen padding
|
|
; $D644-$D6A3 OamTableGroups3 OAM table groups 3-5 - 3x32 byte tables before sprite template
|
|
; $D6A4-$D6A4 SpriteTableTerminator FF terminator byte before sprite template table
|
|
; $D6A5-$D6C4 SpriteTemplateTable 32-byte sprite template (CopySpriteTemplateTable reads $D6A5) - 8x4 Y/tile/attr/X
|
|
; $D6C5-$D6E4 ButtonOamTemplateTable 32-byte button OAM template (PrepareButtonOam reads $D6C5) - 8x4 Y/tile/attr/X
|
|
; $D6E5-$FFF9 RomPadding 10517 bytes of $FF ROM padding
|
|
; $FFFA-$FFFF ResetVectors Reset/NMI/IRQ vectors - 6 bytes
|
|
;
|
|
VramCommandStream1:
|
|
; VRAM command stream start - PPU addr/data pairs read by VramWriteLoop
|
|
; ---- $CF06-$CF28 (35 bytes) ----
|
|
.byte $3F, $00, $20, $0F, $16, $00, $30, $0F, $1A, $2A, $30, $0F, $1A, $00, $30, $0F ; CPU:$CF06 PRG:0F06 3F 00 20 0F 16 00 30 0F 1A 2A 30 0F 1A 00 30 0F
|
|
.byte $30, $00, $30, $0F, $16, $00, $30, $0F, $1A, $2A, $30, $0F, $1A, $00, $30, $0F ; CPU:$CF16 PRG:0F16 30 00 30 0F 16 00 30 0F 1A 2A 30 0F 1A 00 30 0F
|
|
.byte $30, $00, $30 ; CPU:$CF26 PRG:0F26 30 00 30
|
|
|
|
VramStream1Terminator:
|
|
; FF terminator byte ending first command stream
|
|
; ---- $CF29-$CF29 (1 bytes) ----
|
|
.byte $FF ; CPU:$CF29 PRG:0F29 FF
|
|
|
|
VramCommandInlineCode:
|
|
; Inline code after jsr $CE98 - lax $20D4, nop $C1,X, $61 padding
|
|
; ---- $CF2A-$CF3F (22 bytes) ----
|
|
.byte $20, $A2, $1C, $60, $61, $61, $61, $61, $61, $61, $61, $61, $61, $61, $61, $61 ; CPU:$CF2A PRG:0F2A 20 A2 1C 60 61 61 61 61 61 61 61 61 61 61 61 61
|
|
.byte $61, $61, $61, $61, $61, $61 ; CPU:$CF3A PRG:0F3A 61 61 61 61 61 61
|
|
|
|
VramCommandBlock2:
|
|
; VRAM command/data block - PPU writes and OAM attribute patterns
|
|
; ---- $CF40-$D061 (290 bytes) ----
|
|
.byte $61, $61, $61, $61, $61, $61, $61, $61, $66, $20, $C2, $1C, $64, $70, $71, $72 ; CPU:$CF40 PRG:0F40 61 61 61 61 61 61 61 61 66 20 C2 1C 64 70 71 72
|
|
.byte $73, $74, $75, $76, $77, $78, $79, $7A, $7B, $24, $7D, $7E, $7F, $A0, $A1, $A2 ; CPU:$CF50 PRG:0F50 73 74 75 76 77 78 79 7A 7B 24 7D 7E 7F A0 A1 A2
|
|
.byte $A3, $A4, $A5, $A6, $A7, $A8, $A9, $67, $20, $E2, $1C, $64, $80, $81, $82, $83 ; CPU:$CF60 PRG:0F60 A3 A4 A5 A6 A7 A8 A9 67 20 E2 1C 64 80 81 82 83
|
|
.byte $84, $85, $86, $87, $88, $89, $8A, $8B, $24, $8D, $8E, $8F, $B0, $B1, $24, $B3 ; CPU:$CF70 PRG:0F70 84 85 86 87 88 89 8A 8B 24 8D 8E 8F B0 B1 24 B3
|
|
.byte $B4, $B5, $B6, $B7, $B8, $B9, $67, $21, $02, $1C, $64, $90, $91, $92, $93, $94 ; CPU:$CF80 PRG:0F80 B4 B5 B6 B7 B8 B9 67 21 02 1C 64 90 91 92 93 94
|
|
.byte $95, $96, $97, $98, $99, $9A, $9B, $9C, $9D, $9E, $9F, $C0, $C1, $24, $C3, $C4 ; CPU:$CF90 PRG:0F90 95 96 97 98 99 9A 9B 9C 9D 9E 9F C0 C1 24 C3 C4
|
|
.byte $C5, $C6, $C7, $C8, $C9, $67, $21, $22, $1C, $62, $63, $63, $63, $63, $63, $63 ; CPU:$CFA0 PRG:0FA0 C5 C6 C7 C8 C9 67 21 22 1C 62 63 63 63 63 63 63
|
|
.byte $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63, $63 ; CPU:$CFB0 PRG:0FB0 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63
|
|
.byte $63, $63, $63, $63, $65, $21, $C5, $18, $01, $24, $17, $18, $1B, $16, $0A, $15 ; CPU:$CFC0 PRG:0FC0 63 63 63 63 65 21 C5 18 01 24 17 18 1B 16 0A 15
|
|
.byte $24, $0C, $18, $17, $1D, $1B, $18, $15, $15, $0E, $1B, $24, $1D, $0E, $1C, $1D ; CPU:$CFD0 PRG:0FD0 24 0C 18 17 1D 1B 18 15 15 0E 1B 24 1D 0E 1C 1D
|
|
.byte $22, $25, $18, $02, $24, $04, $24, $19, $15, $0A, $22, $24, $0C, $18, $17, $1D ; CPU:$CFE0 PRG:0FE0 22 25 18 02 24 04 24 19 15 0A 22 24 0C 18 17 1D
|
|
.byte $1B, $18, $15, $15, $0E, $1B, $24, $1D, $0E, $1C, $1D, $22, $85, $18, $03, $24 ; CPU:$CFF0 PRG:0FF0 1B 18 15 15 0E 1B 24 1D 0E 1C 1D 22 85 18 03 24
|
|
.byte $1B, $0E, $1D, $1E, $1B, $17, $24, $1D, $18, $24, $16, $0A, $12, $17, $24, $16 ; CPU:$D000 PRG:1000 1B 0E 1D 1E 1B 17 24 1D 18 24 16 0A 12 17 24 16
|
|
.byte $0E, $17, $1E, $24, $24, $24, $23, $C0, $10, $00, $00, $00, $00, $00, $00, $00 ; CPU:$D010 PRG:1010 0E 17 1E 24 24 24 23 C0 10 00 00 00 00 00 00 00
|
|
.byte $00, $44, $55, $55, $55, $55, $55, $55, $11, $23, $D0, $10, $04, $05, $05, $05 ; CPU:$D020 PRG:1020 00 44 55 55 55 55 55 55 11 23 D0 10 04 05 05 05
|
|
.byte $05, $05, $05, $01, $00, $00, $00, $00, $00, $00, $00, $00, $23, $E0, $10, $00 ; CPU:$D030 PRG:1030 05 05 05 01 00 00 00 00 00 00 00 00 23 E0 10 00
|
|
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $23 ; CPU:$D040 PRG:1040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 23
|
|
.byte $F0, $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$D050 PRG:1050 F0 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
.byte $00, $00 ; CPU:$D060 PRG:1060 00 00
|
|
|
|
VramStream2Terminator:
|
|
; FF terminator byte ending second command stream
|
|
; ---- $D062-$D062 (1 bytes) ----
|
|
.byte $FF ; CPU:$D062 PRG:1062 FF
|
|
|
|
VramCommandBlock3:
|
|
; VRAM command/data block - continues command stream patterns
|
|
; ---- $D063-$D1F3 (401 bytes) ----
|
|
.byte $20, $62, $1A, $1D, $1E, $1B, $0B, $18, $24, $1C, $24, $0B, $24, $0A, $24, $24 ; CPU:$D063 PRG:1063 20 62 1A 1D 1E 1B 0B 18 24 1C 24 0B 24 0A 24 24
|
|
.byte $02, $24, $19, $15, $0A, $22, $0E, $1B, $24, $1D, $0E, $1C, $1D, $20, $8F, $0D ; CPU:$D073 PRG:1073 02 24 19 15 0A 22 0E 1B 24 1D 0E 1C 1D 20 8F 0D
|
|
.byte $40, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $41, $20, $AF, $0D ; CPU:$D083 PRG:1083 40 42 42 42 42 42 42 42 42 42 42 42 41 20 AF 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $01, $24, $28, $29, $2A, $2B, $46, $20, $CF, $0D ; CPU:$D093 PRG:1093 47 24 24 24 24 24 01 24 28 29 2A 2B 46 20 CF 0D
|
|
.byte $47, $24, $4A, $24, $24, $24, $24, $24, $24, $24, $24, $24, $46, $20, $EF, $0D ; CPU:$D0A3 PRG:10A3 47 24 4A 24 24 24 24 24 24 24 24 24 46 20 EF 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $26, $24, $24, $24, $26, $24, $46, $21, $0F, $0D ; CPU:$D0B3 PRG:10B3 47 24 24 24 24 24 26 24 24 24 26 24 46 21 0F 0D
|
|
.byte $44, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $45, $21, $4F, $0D ; CPU:$D0C3 PRG:10C3 44 43 43 43 43 43 43 43 43 43 43 43 45 21 4F 0D
|
|
.byte $40, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $41, $21, $6F, $0D ; CPU:$D0D3 PRG:10D3 40 42 42 42 42 42 42 42 42 42 42 42 41 21 6F 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $02, $24, $28, $29, $2A, $2B, $46, $21, $8F, $0D ; CPU:$D0E3 PRG:10E3 47 24 24 24 24 24 02 24 28 29 2A 2B 46 21 8F 0D
|
|
.byte $47, $24, $4A, $24, $24, $24, $24, $24, $24, $24, $24, $24, $46, $21, $AF, $0D ; CPU:$D0F3 PRG:10F3 47 24 4A 24 24 24 24 24 24 24 24 24 46 21 AF 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $26, $24, $24, $24, $26, $24, $46, $21, $CF, $0D ; CPU:$D103 PRG:1103 47 24 24 24 24 24 26 24 24 24 26 24 46 21 CF 0D
|
|
.byte $44, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $45, $20, $A6, $01 ; CPU:$D113 PRG:1113 44 43 43 43 43 43 43 43 43 43 43 43 45 20 A6 01
|
|
.byte $D1, $21, $06, $01, $2C, $21, $66, $01, $D1, $21, $C6, $01, $2C, $20, $87, $07 ; CPU:$D123 PRG:1123 D1 21 06 01 2C 21 66 01 D1 21 C6 01 2C 20 87 07
|
|
.byte $58, $53, $5A, $53, $5A, $53, $57, $20, $A7, $07, $50, $24, $54, $24, $54, $24 ; CPU:$D133 PRG:1133 58 53 5A 53 5A 53 57 20 A7 07 50 24 54 24 54 24
|
|
.byte $51, $20, $C7, $07, $50, $24, $54, $24, $54, $24, $51, $20, $E7, $07, $50, $24 ; CPU:$D143 PRG:1143 51 20 C7 07 50 24 54 24 54 24 51 20 E7 07 50 24
|
|
.byte $54, $24, $54, $24, $51, $21, $07, $07, $50, $24, $54, $24, $54, $24, $51, $21 ; CPU:$D153 PRG:1153 54 24 54 24 51 21 07 07 50 24 54 24 54 24 51 21
|
|
.byte $27, $07, $56, $52, $59, $52, $59, $52, $55, $21, $47, $07, $58, $53, $5A, $53 ; CPU:$D163 PRG:1163 27 07 56 52 59 52 59 52 55 21 47 07 58 53 5A 53
|
|
.byte $5A, $53, $57, $21, $67, $07, $50, $24, $54, $24, $54, $24, $51, $21, $87, $07 ; CPU:$D173 PRG:1173 5A 53 57 21 67 07 50 24 54 24 54 24 51 21 87 07
|
|
.byte $50, $24, $54, $24, $54, $24, $51, $21, $A7, $07, $50, $24, $54, $24, $54, $24 ; CPU:$D183 PRG:1183 50 24 54 24 54 24 51 21 A7 07 50 24 54 24 54 24
|
|
.byte $51, $21, $C7, $07, $50, $24, $54, $24, $54, $24, $51, $21, $E7, $07, $56, $52 ; CPU:$D193 PRG:1193 51 21 C7 07 50 24 54 24 54 24 51 21 E7 07 56 52
|
|
.byte $59, $52, $59, $52, $55, $23, $C0, $10, $40, $50, $50, $50, $50, $50, $50, $00 ; CPU:$D1A3 PRG:11A3 59 52 59 52 55 23 C0 10 40 50 50 50 50 50 50 00
|
|
.byte $00, $00, $00, $00, $00, $03, $00, $00, $23, $D0, $10, $00, $00, $00, $00, $00 ; CPU:$D1B3 PRG:11B3 00 00 00 00 00 03 00 00 23 D0 10 00 00 00 00 00
|
|
.byte $30, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $23, $E0, $10, $00, $00 ; CPU:$D1C3 PRG:11C3 30 00 00 00 00 00 00 00 00 00 00 23 E0 10 00 00
|
|
.byte $00, $00, $00, $03, $00, $00, $00, $00, $00, $00, $00, $30, $00, $00, $23, $F0 ; CPU:$D1D3 PRG:11D3 00 00 00 03 00 00 00 00 00 00 00 30 00 00 23 F0
|
|
.byte $10, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$D1E3 PRG:11E3 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
|
.byte $00 ; CPU:$D1F3 PRG:11F3 00
|
|
|
|
VramStream3Terminator:
|
|
; FF terminator byte ending third command stream
|
|
; ---- $D1F4-$D1F4 (1 bytes) ----
|
|
.byte $FF ; CPU:$D1F4 PRG:11F4 FF
|
|
|
|
VramCommandBlock4:
|
|
; Largest VRAM command/data block - 697 bytes of command stream
|
|
; ---- $D1F5-$D4AD (697 bytes) ----
|
|
.byte $20, $62, $1A, $1D, $1E, $1B, $0B, $18, $24, $1C, $24, $0B, $24, $0A, $24, $24 ; CPU:$D1F5 PRG:11F5 20 62 1A 1D 1E 1B 0B 18 24 1C 24 0B 24 0A 24 24
|
|
.byte $04, $24, $19, $15, $0A, $22, $0E, $1B, $24, $1D, $0E, $1C, $1D, $20, $8F, $0D ; CPU:$D205 PRG:1205 04 24 19 15 0A 22 0E 1B 24 1D 0E 1C 1D 20 8F 0D
|
|
.byte $40, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $41, $20, $AF, $0D ; CPU:$D215 PRG:1215 40 42 42 42 42 42 42 42 42 42 42 42 41 20 AF 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $01, $24, $28, $29, $2A, $2B, $46, $20, $CF, $0D ; CPU:$D225 PRG:1225 47 24 24 24 24 24 01 24 28 29 2A 2B 46 20 CF 0D
|
|
.byte $47, $24, $4A, $24, $24, $24, $24, $24, $24, $24, $24, $24, $46, $20, $EF, $0D ; CPU:$D235 PRG:1235 47 24 4A 24 24 24 24 24 24 24 24 24 46 20 EF 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $26, $24, $24, $24, $26, $24, $46, $21, $0F, $0D ; CPU:$D245 PRG:1245 47 24 24 24 24 24 26 24 24 24 26 24 46 21 0F 0D
|
|
.byte $44, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $45, $21, $4F, $0D ; CPU:$D255 PRG:1255 44 43 43 43 43 43 43 43 43 43 43 43 45 21 4F 0D
|
|
.byte $40, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $41, $21, $6F, $0D ; CPU:$D265 PRG:1265 40 42 42 42 42 42 42 42 42 42 42 42 41 21 6F 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $02, $24, $28, $29, $2A, $2B, $46, $21, $8F, $0D ; CPU:$D275 PRG:1275 47 24 24 24 24 24 02 24 28 29 2A 2B 46 21 8F 0D
|
|
.byte $47, $24, $4A, $24, $24, $24, $24, $24, $24, $24, $24, $24, $46, $21, $AF, $0D ; CPU:$D285 PRG:1285 47 24 4A 24 24 24 24 24 24 24 24 24 46 21 AF 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $26, $24, $24, $24, $26, $24, $46, $21, $CF, $0D ; CPU:$D295 PRG:1295 47 24 24 24 24 24 26 24 24 24 26 24 46 21 CF 0D
|
|
.byte $44, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $45, $22, $0F, $0D ; CPU:$D2A5 PRG:12A5 44 43 43 43 43 43 43 43 43 43 43 43 45 22 0F 0D
|
|
.byte $40, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $41, $22, $2F, $0D ; CPU:$D2B5 PRG:12B5 40 42 42 42 42 42 42 42 42 42 42 42 41 22 2F 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $03, $24, $28, $29, $2A, $2B, $46, $22, $4F, $0D ; CPU:$D2C5 PRG:12C5 47 24 24 24 24 24 03 24 28 29 2A 2B 46 22 4F 0D
|
|
.byte $47, $24, $4A, $24, $24, $24, $24, $24, $24, $24, $24, $24, $46, $22, $6F, $0D ; CPU:$D2D5 PRG:12D5 47 24 4A 24 24 24 24 24 24 24 24 24 46 22 6F 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $26, $24, $24, $24, $26, $24, $46, $22, $8F, $0D ; CPU:$D2E5 PRG:12E5 47 24 24 24 24 24 26 24 24 24 26 24 46 22 8F 0D
|
|
.byte $44, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $45, $22, $CF, $0D ; CPU:$D2F5 PRG:12F5 44 43 43 43 43 43 43 43 43 43 43 43 45 22 CF 0D
|
|
.byte $40, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $42, $41, $22, $EF, $0D ; CPU:$D305 PRG:1305 40 42 42 42 42 42 42 42 42 42 42 42 41 22 EF 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $04, $24, $28, $29, $2A, $2B, $46, $23, $0F, $0D ; CPU:$D315 PRG:1315 47 24 24 24 24 24 04 24 28 29 2A 2B 46 23 0F 0D
|
|
.byte $47, $24, $4A, $24, $24, $24, $24, $24, $24, $24, $24, $24, $46, $23, $2F, $0D ; CPU:$D325 PRG:1325 47 24 4A 24 24 24 24 24 24 24 24 24 46 23 2F 0D
|
|
.byte $47, $24, $24, $24, $24, $24, $26, $24, $24, $24, $26, $24, $46, $23, $4F, $0D ; CPU:$D335 PRG:1335 47 24 24 24 24 24 26 24 24 24 26 24 46 23 4F 0D
|
|
.byte $44, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $43, $45, $20, $A6, $01 ; CPU:$D345 PRG:1345 44 43 43 43 43 43 43 43 43 43 43 43 45 20 A6 01
|
|
.byte $D1, $21, $06, $01, $2C, $21, $66, $01, $D1, $21, $C6, $01, $2C, $22, $26, $01 ; CPU:$D355 PRG:1355 D1 21 06 01 2C 21 66 01 D1 21 C6 01 2C 22 26 01
|
|
.byte $D1, $22, $86, $01, $2C, $22, $E6, $01, $D1, $23, $46, $01, $2C, $20, $87, $07 ; CPU:$D365 PRG:1365 D1 22 86 01 2C 22 E6 01 D1 23 46 01 2C 20 87 07
|
|
.byte $58, $53, $5A, $53, $5A, $53, $57, $20, $A7, $07, $50, $24, $54, $24, $54, $24 ; CPU:$D375 PRG:1375 58 53 5A 53 5A 53 57 20 A7 07 50 24 54 24 54 24
|
|
.byte $51, $20, $C7, $07, $50, $24, $54, $24, $54, $24, $51, $20, $E7, $07, $50, $24 ; CPU:$D385 PRG:1385 51 20 C7 07 50 24 54 24 54 24 51 20 E7 07 50 24
|
|
.byte $54, $24, $54, $24, $51, $21, $07, $07, $50, $24, $54, $24, $54, $24, $51, $21 ; CPU:$D395 PRG:1395 54 24 54 24 51 21 07 07 50 24 54 24 54 24 51 21
|
|
.byte $27, $07, $56, $52, $59, $52, $59, $52, $55, $21, $47, $07, $58, $53, $5A, $53 ; CPU:$D3A5 PRG:13A5 27 07 56 52 59 52 59 52 55 21 47 07 58 53 5A 53
|
|
.byte $5A, $53, $57, $21, $67, $07, $50, $24, $54, $24, $54, $24, $51, $21, $87, $07 ; CPU:$D3B5 PRG:13B5 5A 53 57 21 67 07 50 24 54 24 54 24 51 21 87 07
|
|
.byte $50, $24, $54, $24, $54, $24, $51, $21, $A7, $07, $50, $24, $54, $24, $54, $24 ; CPU:$D3C5 PRG:13C5 50 24 54 24 54 24 51 21 A7 07 50 24 54 24 54 24
|
|
.byte $51, $21, $C7, $07, $50, $24, $54, $24, $54, $24, $51, $21, $E7, $07, $56, $52 ; CPU:$D3D5 PRG:13D5 51 21 C7 07 50 24 54 24 54 24 51 21 E7 07 56 52
|
|
.byte $59, $52, $59, $52, $55, $22, $07, $07, $58, $53, $5A, $53, $5A, $53, $57, $22 ; CPU:$D3E5 PRG:13E5 59 52 59 52 55 22 07 07 58 53 5A 53 5A 53 57 22
|
|
.byte $27, $07, $50, $24, $54, $24, $54, $24, $51, $22, $47, $07, $50, $24, $54, $24 ; CPU:$D3F5 PRG:13F5 27 07 50 24 54 24 54 24 51 22 47 07 50 24 54 24
|
|
.byte $54, $24, $51, $22, $67, $07, $50, $24, $54, $24, $54, $24, $51, $22, $87, $07 ; CPU:$D405 PRG:1405 54 24 51 22 67 07 50 24 54 24 54 24 51 22 87 07
|
|
.byte $50, $24, $54, $24, $54, $24, $51, $22, $A7, $07, $56, $52, $59, $52, $59, $52 ; CPU:$D415 PRG:1415 50 24 54 24 54 24 51 22 A7 07 56 52 59 52 59 52
|
|
.byte $55, $22, $C7, $07, $58, $53, $5A, $53, $5A, $53, $57, $22, $E7, $07, $50, $24 ; CPU:$D425 PRG:1425 55 22 C7 07 58 53 5A 53 5A 53 57 22 E7 07 50 24
|
|
.byte $54, $24, $54, $24, $51, $23, $07, $07, $50, $24, $54, $24, $54, $24, $51, $23 ; CPU:$D435 PRG:1435 54 24 54 24 51 23 07 07 50 24 54 24 54 24 51 23
|
|
.byte $27, $07, $50, $24, $54, $24, $54, $24, $51, $23, $47, $07, $50, $24, $54, $24 ; CPU:$D445 PRG:1445 27 07 50 24 54 24 54 24 51 23 47 07 50 24 54 24
|
|
.byte $54, $24, $51, $23, $67, $07, $56, $52, $59, $52, $59, $52, $55, $23, $C0, $10 ; CPU:$D455 PRG:1455 54 24 51 23 67 07 56 52 59 52 59 52 55 23 C0 10
|
|
.byte $40, $50, $50, $50, $50, $50, $50, $00, $00, $00, $00, $00, $00, $03, $00, $00 ; CPU:$D465 PRG:1465 40 50 50 50 50 50 50 00 00 00 00 00 00 03 00 00
|
|
.byte $23, $D0, $10, $00, $00, $00, $00, $00, $30, $00, $00, $00, $00, $00, $00, $00 ; CPU:$D475 PRG:1475 23 D0 10 00 00 00 00 00 30 00 00 00 00 00 00 00
|
|
.byte $00, $00, $00, $23, $E0, $10, $00, $00, $00, $00, $00, $03, $00, $00, $00, $00 ; CPU:$D485 PRG:1485 00 00 00 23 E0 10 00 00 00 00 00 03 00 00 00 00
|
|
.byte $00, $00, $00, $30, $00, $00, $23, $F0, $10, $00, $00, $00, $00, $00, $00, $00 ; CPU:$D495 PRG:1495 00 00 00 30 00 00 23 F0 10 00 00 00 00 00 00 00
|
|
.byte $00, $00, $00, $00, $00, $00, $00, $00, $00 ; CPU:$D4A5 PRG:14A5 00 00 00 00 00 00 00 00 00
|
|
|
|
OamTableStreamTerminator:
|
|
; FF terminator byte before OAM gap data
|
|
; ---- $D4AE-$D4AE (1 bytes) ----
|
|
.byte $FF ; CPU:$D4AE PRG:14AE FF
|
|
|
|
OamTableGap:
|
|
; Gap data before OAM table at $D4E3
|
|
; ---- $D4AF-$D4E1 (51 bytes) ----
|
|
.byte $A5, $24, $54, $24, $54, $24, $24, $54, $24, $54, $24, $24, $54, $24, $54, $24 ; CPU:$D4AF PRG:14AF A5 24 54 24 54 24 24 54 24 54 24 24 54 24 54 24
|
|
.byte $24, $54, $24, $54, $24, $52, $59, $52, $59, $52, $53, $5A, $53, $5A, $53, $24 ; CPU:$D4BF PRG:14BF 24 54 24 54 24 52 59 52 59 52 53 5A 53 5A 53 24
|
|
.byte $54, $24, $54, $24, $24, $54, $24, $54, $24, $24, $54, $24, $54, $24, $24, $54 ; CPU:$D4CF PRG:14CF 54 24 54 24 24 54 24 54 24 24 54 24 54 24 24 54
|
|
.byte $24, $54, $24 ; CPU:$D4DF PRG:14DF 24 54 24
|
|
|
|
OamTable1Terminator:
|
|
; FF terminator byte before OAM table group 1
|
|
; ---- $D4E2-$D4E2 (1 bytes) ----
|
|
.byte $FF ; CPU:$D4E2 PRG:14E2 FF
|
|
|
|
OamTableGroups1:
|
|
; OAM table groups 1-7 (CopyOamFromTable reads $D4E3) - 7x32 byte tables
|
|
; ---- $D4E3-$D5C2 (224 bytes) ----
|
|
.byte $37, $4D, $03, $D0, $37, $4D, $03, $C0, $37, $4E, $03, $B0, $37, $4E, $03, $A0 ; CPU:$D4E3 PRG:14E3 37 4D 03 D0 37 4D 03 C0 37 4E 03 B0 37 4E 03 A0
|
|
.byte $27, $48, $03, $88, $37, $4C, $03, $88, $2F, $49, $03, $80, $2F, $4B, $03, $90 ; CPU:$D4F3 PRG:14F3 27 48 03 88 37 4C 03 88 2F 49 03 80 2F 4B 03 90
|
|
.byte $67, $4D, $03, $D0, $67, $4D, $03, $C0, $67, $4E, $03, $B0, $67, $4E, $03, $A0 ; CPU:$D503 PRG:1503 67 4D 03 D0 67 4D 03 C0 67 4E 03 B0 67 4E 03 A0
|
|
.byte $57, $48, $03, $88, $67, $4C, $03, $88, $5F, $49, $03, $80, $5F, $4B, $03, $90 ; CPU:$D513 PRG:1513 57 48 03 88 67 4C 03 88 5F 49 03 80 5F 4B 03 90
|
|
.byte $97, $4D, $03, $D0, $97, $4D, $03, $C0, $97, $4E, $03, $B0, $97, $4E, $03, $A0 ; CPU:$D523 PRG:1523 97 4D 03 D0 97 4D 03 C0 97 4E 03 B0 97 4E 03 A0
|
|
.byte $87, $48, $03, $88, $97, $4C, $03, $88, $8F, $49, $03, $80, $8F, $4B, $03, $90 ; CPU:$D533 PRG:1533 87 48 03 88 97 4C 03 88 8F 49 03 80 8F 4B 03 90
|
|
.byte $C7, $4D, $03, $D0, $C7, $4D, $03, $C0, $C7, $4E, $03, $B0, $C7, $4E, $03, $A0 ; CPU:$D543 PRG:1543 C7 4D 03 D0 C7 4D 03 C0 C7 4E 03 B0 C7 4E 03 A0
|
|
.byte $B7, $48, $03, $88, $C7, $4C, $03, $88, $BF, $49, $03, $80, $BF, $4B, $03, $90 ; CPU:$D553 PRG:1553 B7 48 03 88 C7 4C 03 88 BF 49 03 80 BF 4B 03 90
|
|
.byte $27, $30, $00, $40, $2F, $30, $00, $40, $37, $30, $00, $40, $3F, $30, $00, $40 ; CPU:$D563 PRG:1563 27 30 00 40 2F 30 00 40 37 30 00 40 3F 30 00 40
|
|
.byte $27, $30, $00, $50, $2F, $30, $00, $50, $37, $30, $00, $50, $3F, $30, $00, $50 ; CPU:$D573 PRG:1573 27 30 00 50 2F 30 00 50 37 30 00 50 3F 30 00 50
|
|
.byte $27, $30, $00, $60, $2F, $30, $00, $60, $37, $30, $00, $60, $3F, $30, $00, $60 ; CPU:$D583 PRG:1583 27 30 00 60 2F 30 00 60 37 30 00 60 3F 30 00 60
|
|
.byte $57, $30, $00, $40, $5F, $30, $00, $40, $67, $30, $00, $40, $6F, $30, $00, $40 ; CPU:$D593 PRG:1593 57 30 00 40 5F 30 00 40 67 30 00 40 6F 30 00 40
|
|
.byte $57, $30, $00, $50, $5F, $30, $00, $50, $67, $30, $00, $50, $6F, $30, $00, $50 ; CPU:$D5A3 PRG:15A3 57 30 00 50 5F 30 00 50 67 30 00 50 6F 30 00 50
|
|
.byte $57, $30, $00, $60, $5F, $30, $00, $60, $67, $30, $00, $60, $6F, $30, $00, $60 ; CPU:$D5B3 PRG:15B3 57 30 00 60 5F 30 00 60 67 30 00 60 6F 30 00 60
|
|
|
|
OamTableStream2Terminator:
|
|
; FF terminator byte before second OAM table group
|
|
; ---- $D5C3-$D5C3 (1 bytes) ----
|
|
.byte $FF ; CPU:$D5C3 PRG:15C3 FF
|
|
|
|
OamTableGroups2:
|
|
; OAM table groups 1-2 (CopyOamFromTable70 reads $D5C4) - 2x32 byte tables
|
|
; ---- $D5C4-$D603 (64 bytes) ----
|
|
.byte $37, $4D, $03, $D0, $37, $4D, $03, $C0, $37, $4E, $03, $B0, $37, $4E, $03, $A0 ; CPU:$D5C4 PRG:15C4 37 4D 03 D0 37 4D 03 C0 37 4E 03 B0 37 4E 03 A0
|
|
.byte $27, $48, $03, $88, $37, $4C, $03, $88, $2F, $49, $03, $80, $2F, $4B, $03, $90 ; CPU:$D5D4 PRG:15D4 27 48 03 88 37 4C 03 88 2F 49 03 80 2F 4B 03 90
|
|
.byte $67, $4D, $03, $D0, $67, $4D, $03, $C0, $67, $4E, $03, $B0, $67, $4E, $03, $A0 ; CPU:$D5E4 PRG:15E4 67 4D 03 D0 67 4D 03 C0 67 4E 03 B0 67 4E 03 A0
|
|
.byte $57, $48, $03, $88, $67, $4C, $03, $88, $5F, $49, $03, $80, $5F, $4B, $03, $90 ; CPU:$D5F4 PRG:15F4 57 48 03 88 67 4C 03 88 5F 49 03 80 5F 4B 03 90
|
|
|
|
OamSpritePadding:
|
|
; 64 bytes of $F4 sprite off-screen padding
|
|
; ---- $D604-$D643 (64 bytes) ----
|
|
.byte $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4 ; CPU:$D604 PRG:1604 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4
|
|
.byte $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4 ; CPU:$D614 PRG:1614 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4
|
|
.byte $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4 ; CPU:$D624 PRG:1624 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4
|
|
.byte $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4, $F4 ; CPU:$D634 PRG:1634 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4
|
|
|
|
OamTableGroups3:
|
|
; OAM table groups 3-5 - 3x32 byte tables before sprite template
|
|
; ---- $D644-$D6A3 (96 bytes) ----
|
|
.byte $27, $30, $00, $40, $2F, $30, $00, $40, $37, $30, $00, $40, $3F, $30, $00, $40 ; CPU:$D644 PRG:1644 27 30 00 40 2F 30 00 40 37 30 00 40 3F 30 00 40
|
|
.byte $27, $30, $00, $50, $2F, $30, $00, $50, $37, $30, $00, $50, $3F, $30, $00, $50 ; CPU:$D654 PRG:1654 27 30 00 50 2F 30 00 50 37 30 00 50 3F 30 00 50
|
|
.byte $27, $30, $00, $60, $2F, $30, $00, $60, $37, $30, $00, $60, $3F, $30, $00, $60 ; CPU:$D664 PRG:1664 27 30 00 60 2F 30 00 60 37 30 00 60 3F 30 00 60
|
|
.byte $57, $30, $00, $40, $5F, $30, $00, $40, $67, $30, $00, $40, $6F, $30, $00, $40 ; CPU:$D674 PRG:1674 57 30 00 40 5F 30 00 40 67 30 00 40 6F 30 00 40
|
|
.byte $57, $30, $00, $50, $5F, $30, $00, $50, $67, $30, $00, $50, $6F, $30, $00, $50 ; CPU:$D684 PRG:1684 57 30 00 50 5F 30 00 50 67 30 00 50 6F 30 00 50
|
|
.byte $57, $30, $00, $60, $5F, $30, $00, $60, $67, $30, $00, $60, $6F, $30, $00, $60 ; CPU:$D694 PRG:1694 57 30 00 60 5F 30 00 60 67 30 00 60 6F 30 00 60
|
|
|
|
SpriteTableTerminator:
|
|
; FF terminator byte before sprite template table
|
|
; ---- $D6A4-$D6A4 (1 bytes) ----
|
|
.byte $FF ; CPU:$D6A4 PRG:16A4 FF
|
|
|
|
SpriteTemplateTable:
|
|
; 32-byte sprite template (CopySpriteTemplateTable reads $D6A5) - 8x4 Y/tile/attr/X
|
|
; ---- $D6A5-$D6C4 (32 bytes) ----
|
|
.byte $79, $1D, $00, $18, $79, $0E, $00, $20, $79, $1C, $00, $28, $79, $1D, $00, $30 ; CPU:$D6A5 PRG:16A5 79 1D 00 18 79 0E 00 20 79 1C 00 28 79 1D 00 30
|
|
.byte $79, $18, $00, $40, $79, $1F, $00, $48, $79, $0E, $00, $50, $79, $1B, $00, $58 ; CPU:$D6B5 PRG:16B5 79 18 00 40 79 1F 00 48 79 0E 00 50 79 1B 00 58
|
|
|
|
ButtonOamTemplateTable:
|
|
; 32-byte button OAM template (PrepareButtonOam reads $D6C5) - 8x4 Y/tile/attr/X
|
|
; ---- $D6C5-$D6E4 (32 bytes) ----
|
|
.byte $79, $0C, $00, $18, $79, $18, $00, $20, $79, $17, $00, $28, $79, $1D, $00, $30 ; CPU:$D6C5 PRG:16C5 79 0C 00 18 79 18 00 20 79 17 00 28 79 1D 00 30
|
|
.byte $79, $0B, $00, $40, $79, $0A, $00, $48, $79, $0D, $00, $50, $79, $24, $00, $58 ; CPU:$D6D5 PRG:16D5 79 0B 00 40 79 0A 00 48 79 0D 00 50 79 24 00 58
|
|
|
|
RomPadding:
|
|
; 10517 bytes of $FF ROM padding
|
|
; ---- $D6E5-$FFF9 (10517 bytes) ----
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D6E5 PRG:16E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D6F5 PRG:16F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D705 PRG:1705 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D715 PRG:1715 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D725 PRG:1725 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D735 PRG:1735 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D745 PRG:1745 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D755 PRG:1755 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D765 PRG:1765 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D775 PRG:1775 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D785 PRG:1785 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D795 PRG:1795 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7A5 PRG:17A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7B5 PRG:17B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7C5 PRG:17C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7D5 PRG:17D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7E5 PRG:17E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D7F5 PRG:17F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D805 PRG:1805 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D815 PRG:1815 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D825 PRG:1825 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D835 PRG:1835 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D845 PRG:1845 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D855 PRG:1855 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D865 PRG:1865 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D875 PRG:1875 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D885 PRG:1885 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D895 PRG:1895 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8A5 PRG:18A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8B5 PRG:18B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8C5 PRG:18C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8D5 PRG:18D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8E5 PRG:18E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D8F5 PRG:18F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D905 PRG:1905 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D915 PRG:1915 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D925 PRG:1925 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D935 PRG:1935 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D945 PRG:1945 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D955 PRG:1955 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D965 PRG:1965 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D975 PRG:1975 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D985 PRG:1985 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D995 PRG:1995 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9A5 PRG:19A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9B5 PRG:19B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9C5 PRG:19C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9D5 PRG:19D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9E5 PRG:19E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$D9F5 PRG:19F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA05 PRG:1A05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA15 PRG:1A15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA25 PRG:1A25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA35 PRG:1A35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA45 PRG:1A45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA55 PRG:1A55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA65 PRG:1A65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA75 PRG:1A75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA85 PRG:1A85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DA95 PRG:1A95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAA5 PRG:1AA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAB5 PRG:1AB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAC5 PRG:1AC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAD5 PRG:1AD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAE5 PRG:1AE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DAF5 PRG:1AF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB05 PRG:1B05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB15 PRG:1B15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB25 PRG:1B25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB35 PRG:1B35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB45 PRG:1B45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB55 PRG:1B55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB65 PRG:1B65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB75 PRG:1B75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB85 PRG:1B85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DB95 PRG:1B95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBA5 PRG:1BA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBB5 PRG:1BB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBC5 PRG:1BC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBD5 PRG:1BD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBE5 PRG:1BE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DBF5 PRG:1BF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC05 PRG:1C05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC15 PRG:1C15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC25 PRG:1C25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC35 PRG:1C35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC45 PRG:1C45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC55 PRG:1C55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC65 PRG:1C65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC75 PRG:1C75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC85 PRG:1C85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DC95 PRG:1C95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCA5 PRG:1CA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCB5 PRG:1CB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCC5 PRG:1CC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCD5 PRG:1CD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCE5 PRG:1CE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DCF5 PRG:1CF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD05 PRG:1D05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD15 PRG:1D15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD25 PRG:1D25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD35 PRG:1D35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD45 PRG:1D45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD55 PRG:1D55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD65 PRG:1D65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD75 PRG:1D75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD85 PRG:1D85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DD95 PRG:1D95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDA5 PRG:1DA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDB5 PRG:1DB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDC5 PRG:1DC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDD5 PRG:1DD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDE5 PRG:1DE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DDF5 PRG:1DF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE05 PRG:1E05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE15 PRG:1E15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE25 PRG:1E25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE35 PRG:1E35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE45 PRG:1E45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE55 PRG:1E55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE65 PRG:1E65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE75 PRG:1E75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE85 PRG:1E85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DE95 PRG:1E95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEA5 PRG:1EA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEB5 PRG:1EB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEC5 PRG:1EC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DED5 PRG:1ED5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEE5 PRG:1EE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DEF5 PRG:1EF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF05 PRG:1F05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF15 PRG:1F15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF25 PRG:1F25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF35 PRG:1F35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF45 PRG:1F45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF55 PRG:1F55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF65 PRG:1F65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF75 PRG:1F75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF85 PRG:1F85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DF95 PRG:1F95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFA5 PRG:1FA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFB5 PRG:1FB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFC5 PRG:1FC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFD5 PRG:1FD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFE5 PRG:1FE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$DFF5 PRG:1FF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E005 PRG:2005 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E015 PRG:2015 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E025 PRG:2025 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E035 PRG:2035 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E045 PRG:2045 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E055 PRG:2055 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E065 PRG:2065 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E075 PRG:2075 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E085 PRG:2085 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E095 PRG:2095 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0A5 PRG:20A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0B5 PRG:20B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0C5 PRG:20C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0D5 PRG:20D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0E5 PRG:20E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E0F5 PRG:20F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E105 PRG:2105 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E115 PRG:2115 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E125 PRG:2125 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E135 PRG:2135 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E145 PRG:2145 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E155 PRG:2155 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E165 PRG:2165 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E175 PRG:2175 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E185 PRG:2185 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E195 PRG:2195 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1A5 PRG:21A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1B5 PRG:21B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1C5 PRG:21C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1D5 PRG:21D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1E5 PRG:21E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E1F5 PRG:21F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E205 PRG:2205 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E215 PRG:2215 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E225 PRG:2225 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E235 PRG:2235 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E245 PRG:2245 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E255 PRG:2255 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E265 PRG:2265 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E275 PRG:2275 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E285 PRG:2285 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E295 PRG:2295 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2A5 PRG:22A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2B5 PRG:22B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2C5 PRG:22C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2D5 PRG:22D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2E5 PRG:22E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E2F5 PRG:22F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E305 PRG:2305 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E315 PRG:2315 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E325 PRG:2325 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E335 PRG:2335 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E345 PRG:2345 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E355 PRG:2355 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E365 PRG:2365 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E375 PRG:2375 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E385 PRG:2385 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E395 PRG:2395 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3A5 PRG:23A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3B5 PRG:23B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3C5 PRG:23C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3D5 PRG:23D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3E5 PRG:23E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E3F5 PRG:23F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E405 PRG:2405 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E415 PRG:2415 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E425 PRG:2425 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E435 PRG:2435 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E445 PRG:2445 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E455 PRG:2455 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E465 PRG:2465 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E475 PRG:2475 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E485 PRG:2485 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E495 PRG:2495 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4A5 PRG:24A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4B5 PRG:24B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4C5 PRG:24C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4D5 PRG:24D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4E5 PRG:24E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E4F5 PRG:24F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E505 PRG:2505 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E515 PRG:2515 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E525 PRG:2525 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E535 PRG:2535 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E545 PRG:2545 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E555 PRG:2555 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E565 PRG:2565 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E575 PRG:2575 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E585 PRG:2585 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E595 PRG:2595 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5A5 PRG:25A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5B5 PRG:25B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5C5 PRG:25C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5D5 PRG:25D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5E5 PRG:25E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E5F5 PRG:25F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E605 PRG:2605 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E615 PRG:2615 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E625 PRG:2625 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E635 PRG:2635 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E645 PRG:2645 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E655 PRG:2655 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E665 PRG:2665 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E675 PRG:2675 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E685 PRG:2685 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E695 PRG:2695 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6A5 PRG:26A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6B5 PRG:26B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6C5 PRG:26C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6D5 PRG:26D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6E5 PRG:26E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E6F5 PRG:26F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E705 PRG:2705 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E715 PRG:2715 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E725 PRG:2725 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E735 PRG:2735 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E745 PRG:2745 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E755 PRG:2755 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E765 PRG:2765 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E775 PRG:2775 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E785 PRG:2785 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E795 PRG:2795 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7A5 PRG:27A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7B5 PRG:27B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7C5 PRG:27C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7D5 PRG:27D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7E5 PRG:27E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E7F5 PRG:27F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E805 PRG:2805 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E815 PRG:2815 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E825 PRG:2825 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E835 PRG:2835 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E845 PRG:2845 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E855 PRG:2855 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E865 PRG:2865 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E875 PRG:2875 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E885 PRG:2885 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E895 PRG:2895 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8A5 PRG:28A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8B5 PRG:28B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8C5 PRG:28C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8D5 PRG:28D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8E5 PRG:28E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E8F5 PRG:28F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E905 PRG:2905 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E915 PRG:2915 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E925 PRG:2925 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E935 PRG:2935 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E945 PRG:2945 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E955 PRG:2955 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E965 PRG:2965 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E975 PRG:2975 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E985 PRG:2985 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E995 PRG:2995 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9A5 PRG:29A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9B5 PRG:29B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9C5 PRG:29C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9D5 PRG:29D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9E5 PRG:29E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$E9F5 PRG:29F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA05 PRG:2A05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA15 PRG:2A15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA25 PRG:2A25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA35 PRG:2A35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA45 PRG:2A45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA55 PRG:2A55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA65 PRG:2A65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA75 PRG:2A75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA85 PRG:2A85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EA95 PRG:2A95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAA5 PRG:2AA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAB5 PRG:2AB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAC5 PRG:2AC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAD5 PRG:2AD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAE5 PRG:2AE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EAF5 PRG:2AF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB05 PRG:2B05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB15 PRG:2B15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB25 PRG:2B25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB35 PRG:2B35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB45 PRG:2B45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB55 PRG:2B55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB65 PRG:2B65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB75 PRG:2B75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB85 PRG:2B85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EB95 PRG:2B95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBA5 PRG:2BA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBB5 PRG:2BB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBC5 PRG:2BC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBD5 PRG:2BD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBE5 PRG:2BE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EBF5 PRG:2BF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC05 PRG:2C05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC15 PRG:2C15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC25 PRG:2C25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC35 PRG:2C35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC45 PRG:2C45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC55 PRG:2C55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC65 PRG:2C65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC75 PRG:2C75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC85 PRG:2C85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EC95 PRG:2C95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECA5 PRG:2CA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECB5 PRG:2CB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECC5 PRG:2CC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECD5 PRG:2CD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECE5 PRG:2CE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ECF5 PRG:2CF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED05 PRG:2D05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED15 PRG:2D15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED25 PRG:2D25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED35 PRG:2D35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED45 PRG:2D45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED55 PRG:2D55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED65 PRG:2D65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED75 PRG:2D75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED85 PRG:2D85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$ED95 PRG:2D95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDA5 PRG:2DA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDB5 PRG:2DB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDC5 PRG:2DC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDD5 PRG:2DD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDE5 PRG:2DE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EDF5 PRG:2DF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE05 PRG:2E05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE15 PRG:2E15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE25 PRG:2E25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE35 PRG:2E35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE45 PRG:2E45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE55 PRG:2E55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE65 PRG:2E65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE75 PRG:2E75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE85 PRG:2E85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EE95 PRG:2E95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEA5 PRG:2EA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEB5 PRG:2EB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEC5 PRG:2EC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EED5 PRG:2ED5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEE5 PRG:2EE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EEF5 PRG:2EF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF05 PRG:2F05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF15 PRG:2F15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF25 PRG:2F25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF35 PRG:2F35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF45 PRG:2F45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF55 PRG:2F55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF65 PRG:2F65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF75 PRG:2F75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF85 PRG:2F85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EF95 PRG:2F95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFA5 PRG:2FA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFB5 PRG:2FB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFC5 PRG:2FC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFD5 PRG:2FD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFE5 PRG:2FE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$EFF5 PRG:2FF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F005 PRG:3005 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F015 PRG:3015 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F025 PRG:3025 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F035 PRG:3035 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F045 PRG:3045 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F055 PRG:3055 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F065 PRG:3065 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F075 PRG:3075 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F085 PRG:3085 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F095 PRG:3095 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0A5 PRG:30A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0B5 PRG:30B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0C5 PRG:30C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0D5 PRG:30D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0E5 PRG:30E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F0F5 PRG:30F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F105 PRG:3105 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F115 PRG:3115 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F125 PRG:3125 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F135 PRG:3135 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F145 PRG:3145 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F155 PRG:3155 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F165 PRG:3165 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F175 PRG:3175 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F185 PRG:3185 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F195 PRG:3195 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1A5 PRG:31A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1B5 PRG:31B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1C5 PRG:31C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1D5 PRG:31D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1E5 PRG:31E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F1F5 PRG:31F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F205 PRG:3205 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F215 PRG:3215 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F225 PRG:3225 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F235 PRG:3235 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F245 PRG:3245 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F255 PRG:3255 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F265 PRG:3265 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F275 PRG:3275 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F285 PRG:3285 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F295 PRG:3295 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F2A5 PRG:32A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F2B5 PRG:32B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F2C5 PRG:32C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F2D5 PRG:32D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F2E5 PRG:32E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F2F5 PRG:32F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F305 PRG:3305 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F315 PRG:3315 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F325 PRG:3325 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F335 PRG:3335 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F345 PRG:3345 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F355 PRG:3355 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F365 PRG:3365 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F375 PRG:3375 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F385 PRG:3385 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F395 PRG:3395 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F3A5 PRG:33A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F3B5 PRG:33B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F3C5 PRG:33C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F3D5 PRG:33D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F3E5 PRG:33E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F3F5 PRG:33F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F405 PRG:3405 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F415 PRG:3415 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F425 PRG:3425 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F435 PRG:3435 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F445 PRG:3445 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F455 PRG:3455 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F465 PRG:3465 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F475 PRG:3475 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F485 PRG:3485 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F495 PRG:3495 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4A5 PRG:34A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4B5 PRG:34B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4C5 PRG:34C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4D5 PRG:34D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4E5 PRG:34E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F4F5 PRG:34F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F505 PRG:3505 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F515 PRG:3515 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F525 PRG:3525 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F535 PRG:3535 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F545 PRG:3545 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F555 PRG:3555 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F565 PRG:3565 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F575 PRG:3575 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F585 PRG:3585 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F595 PRG:3595 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F5A5 PRG:35A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F5B5 PRG:35B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F5C5 PRG:35C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F5D5 PRG:35D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F5E5 PRG:35E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F5F5 PRG:35F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F605 PRG:3605 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F615 PRG:3615 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F625 PRG:3625 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F635 PRG:3635 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F645 PRG:3645 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F655 PRG:3655 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F665 PRG:3665 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F675 PRG:3675 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F685 PRG:3685 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F695 PRG:3695 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F6A5 PRG:36A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F6B5 PRG:36B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F6C5 PRG:36C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F6D5 PRG:36D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F6E5 PRG:36E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F6F5 PRG:36F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F705 PRG:3705 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F715 PRG:3715 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F725 PRG:3725 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F735 PRG:3735 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F745 PRG:3745 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F755 PRG:3755 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F765 PRG:3765 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F775 PRG:3775 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F785 PRG:3785 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F795 PRG:3795 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7A5 PRG:37A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7B5 PRG:37B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7C5 PRG:37C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7D5 PRG:37D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7E5 PRG:37E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F7F5 PRG:37F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F805 PRG:3805 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F815 PRG:3815 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F825 PRG:3825 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F835 PRG:3835 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F845 PRG:3845 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F855 PRG:3855 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F865 PRG:3865 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F875 PRG:3875 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F885 PRG:3885 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F895 PRG:3895 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F8A5 PRG:38A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F8B5 PRG:38B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F8C5 PRG:38C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F8D5 PRG:38D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F8E5 PRG:38E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F8F5 PRG:38F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F905 PRG:3905 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F915 PRG:3915 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F925 PRG:3925 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F935 PRG:3935 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F945 PRG:3945 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F955 PRG:3955 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F965 PRG:3965 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F975 PRG:3975 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F985 PRG:3985 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F995 PRG:3995 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F9A5 PRG:39A5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F9B5 PRG:39B5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F9C5 PRG:39C5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F9D5 PRG:39D5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F9E5 PRG:39E5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$F9F5 PRG:39F5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA05 PRG:3A05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA15 PRG:3A15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA25 PRG:3A25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA35 PRG:3A35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA45 PRG:3A45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA55 PRG:3A55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA65 PRG:3A65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA75 PRG:3A75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA85 PRG:3A85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FA95 PRG:3A95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FAA5 PRG:3AA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FAB5 PRG:3AB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FAC5 PRG:3AC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FAD5 PRG:3AD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FAE5 PRG:3AE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FAF5 PRG:3AF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB05 PRG:3B05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB15 PRG:3B15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB25 PRG:3B25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB35 PRG:3B35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB45 PRG:3B45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB55 PRG:3B55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB65 PRG:3B65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB75 PRG:3B75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB85 PRG:3B85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FB95 PRG:3B95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBA5 PRG:3BA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBB5 PRG:3BB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBC5 PRG:3BC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBD5 PRG:3BD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBE5 PRG:3BE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FBF5 PRG:3BF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC05 PRG:3C05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC15 PRG:3C15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC25 PRG:3C25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC35 PRG:3C35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC45 PRG:3C45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC55 PRG:3C55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC65 PRG:3C65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC75 PRG:3C75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC85 PRG:3C85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FC95 PRG:3C95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCA5 PRG:3CA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCB5 PRG:3CB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCC5 PRG:3CC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCD5 PRG:3CD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCE5 PRG:3CE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FCF5 PRG:3CF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD05 PRG:3D05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD15 PRG:3D15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD25 PRG:3D25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD35 PRG:3D35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD45 PRG:3D45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD55 PRG:3D55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD65 PRG:3D65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD75 PRG:3D75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD85 PRG:3D85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FD95 PRG:3D95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDA5 PRG:3DA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDB5 PRG:3DB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDC5 PRG:3DC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDD5 PRG:3DD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDE5 PRG:3DE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FDF5 PRG:3DF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE05 PRG:3E05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE15 PRG:3E15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE25 PRG:3E25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE35 PRG:3E35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE45 PRG:3E45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE55 PRG:3E55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE65 PRG:3E65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE75 PRG:3E75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE85 PRG:3E85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FE95 PRG:3E95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEA5 PRG:3EA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEB5 PRG:3EB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEC5 PRG:3EC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FED5 PRG:3ED5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEE5 PRG:3EE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FEF5 PRG:3EF5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF05 PRG:3F05 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF15 PRG:3F15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF25 PRG:3F25 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF35 PRG:3F35 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF45 PRG:3F45 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF55 PRG:3F55 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF65 PRG:3F65 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF75 PRG:3F75 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF85 PRG:3F85 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FF95 PRG:3F95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFA5 PRG:3FA5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFB5 PRG:3FB5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFC5 PRG:3FC5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFD5 PRG:3FD5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; CPU:$FFE5 PRG:3FE5 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
|
.byte $FF, $FF, $FF, $FF, $FF ; CPU:$FFF5 PRG:3FF5 FF FF FF FF FF
|
|
|
|
ResetVectors:
|
|
; Reset/NMI/IRQ vectors - 6 bytes
|
|
; ---- $FFFA-$FFFF (6 bytes) ----
|
|
.byte $F7, $CC, $00, $C0, $00, $C0 ; CPU:$FFFA PRG:3FFA F7 CC 00 C0 00 C0
|
|
|